YangDK
개발 공부
YangDK
전체 방문자
오늘
어제
  • 개발 공부 시작 (22)
    • GitHub (2)
    • JAVA (1)
    • 시스템 프로그래밍(윈도우) (1)
    • C# (6)
    • 자바스크립트 (1)
    • 프로젝트 제작 (1)
    • 연습 프로젝트 (2)
    • HTTP (1)
    • 타입스크립트 (0)
    • 오류 해결 (0)
    • React (1)
    • 컴퓨터 구조 (1)
    • 자료구조 & 알고리즘 (1)
    • HTML (1)
    • CSS (1)
    • 프로그래머스 (1)
    • IT 기기 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 웹 개발 공부
  • programmers
  • Page
  • 프로그래머스
  • Big O
  • 기가바이트
  • dashboard
  • LandingPage
  • b650m k
  • 빅오
  • Dev-Matching
  • b650
  • 메인화면
  • css
  • GiGABYTE
  • 프론트엔드
  • 메인보드
  • Front-end
  • 자료구조
  • landing

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
YangDK

개발 공부

C#

추상클래스, 인터페이스

2021. 5. 14. 14:21

추상 클래스

ex)

abstract class Monster      //abstract를 추가할 경우 'Monster'는 추상화된다.

{

       public abstract void Shout()    // 추상 클래스 내의 함수 또한 추상적으로 만들 수 있다, 추상적으로 만든 함수는
                                                  해당 함수 내에서 정의를 해줄 수 없다.(개념적으로만 존재한다.)

}

class Orc : Monster         // 추상 클래스를 상속받은 class들은 반드시 추상적으로 생성된 함수를 추가해야한다.

{

       public override void Shout() {}

}

class Skeleton : Monster

{

       public override void Shout() {}

}

 

프로젝트를 진행 중 여러개의 class를 상속받고 싶은 경우가 생길 수 있다.

C++에서는 다중 상속이 가능하지만 C#에서는 다중 상속이 불가능하다.

 

C#에서 다중 상속이 불가능하게 막아둔 이유 : 위의 코드를 이어 하나의 class를 추가 생성하여 예시를 든다.

=>

class SkeletonOrc : Skeleton , Orc    // 이 경우 Skeleton, Orc의 기능을 모두 상속 받게 되는데 두 class에서 중복되는

                                         기능이(Shout()) 있다, 이 상황에서 두 기능이 충돌하게 되기 때문에 다중 상속을 막았다.

C#에서 이를 위해 지원하는 문법이 있다.

 

인터페이스

ex)

Interface IMoving    // Interface 지정 후 이름을 선언하는데 일반적으로 선언해도 상관없지만 Interface라는 것을

                              명시하기 위해 이름 앞에 'I'를 추가하기도 한다. = Moving => IMoving

{

    void Fly();          // Interface의 함수는 public과 같은 키워드를 선언해줄 필요없이 형태만 선언해준다.

}

 

class MovingOrc : Orc, IMoving    //  부모 클래스는 아니지만 Interface는 부모 클래스와 더불어서 제공할 수 있다.

{

    public void Fly()                    // Interface를 상속받으면 해당 Interface에 있는 함수를 사용해야한다.

    { }

}

 

Interface의 경우 추상화와 달리 여러개의 Interface를 다중으로 상속받을 수 있다는 장점이 있다.

 

'C#' 카테고리의 다른 글

객체지향  (0) 2021.05.14
Generic(일반화)  (0) 2021.05.14
Dictionary  (0) 2021.05.13
다차원 배열  (0) 2021.05.13
배열  (0) 2021.05.12
    'C#' 카테고리의 다른 글
    • 객체지향
    • Generic(일반화)
    • Dictionary
    • 다차원 배열
    YangDK
    YangDK

    티스토리툴바