본문 바로가기
C# 공부

[C#]상속: Virtual, Abstract, Interface

by Dev_Hugh 2023. 11. 20.
728x90
반응형

C#에서 상속시 자주 등장하는 키워드 virtual(가상), Abstract(추상), Interface(인터페이스)에 대해 정리하려고 한다.

 

Virtual (가상) 키워드

- 자식 클래스에서 override 할 수 있으나 원하면 재정의 해야한다.

- virtual class는 완벽한 기능을 제공할 수 있다.

- 가상 클래스는 인스턴스화 할 수 있다.

 

Abstract (추상) 키워드

- 불완전한 키워드로 자식 클래스에서 반드시 재정의 해야한다.

- 사용 목적은 여러 자식 클래스에서 공유할 기본적인 클래스의 공통적인 정의를 제공하는 것이다.

- 추상 클래스는 인스턴스화 할 수 없다.

 

Interface (인터페이스) 키워드

- abstract와 비슷하나 멤버 필드를 사용할 수 없다. 그러나 함수와 프로퍼티는 사용 가능하다.

- 여러클래스에 공통적인 기능을 추가하기 위해 사용한다.

 

Abstract vs Interface

보통 abstract는 개념적으로 계층적인 구조에서 사용이 되며 Interface는 서로다른 계층이나 타입이라도 같은기능을 추가하고 싶을때 사용한다.

 

결론

-Vritual은 하나의 기능을 하는 완전한 클래스이며, 파생클래스에서 상속해서 추가적인 기능추가 및 virtual 한정자가 달린 것을 재정의해서 사용 가능하다.

-Abstract는 여러개의 파생 클래스에서 공유할 기본 클래스의 공통적인 정의만 하고 ,파생클래스에서 abstract 한정자가 달린 것을 모두 필수적으로 재정의 해야한다.

-Interface는 abstract와 비슷하지만 멤버변수를 사용할 수 없다.

 

ex) Animal 클래스 하위 Dog, Bird 클래스들이 있고 Walk와 Fly 기능을 선택에 따라 재정의해서 구현시 -> Virtual 사용

ex) Ainmal 클래스 하위 Dog, Cat 클래스들이 있고 Cry 기능이 무조건 있어야 할 때 -> Abstract 사용

ex) Animal 클래스, Machine 클래스 가 있을 때 두개의 서로다른 클래스에 Cry() 라는 기능 구현시 -> Interface 사용

728x90
반응형

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

[자료구조] 큐(Queue)  (0) 2023.06.26
[자료구조] 스택(Stack)  (0) 2023.06.23
[Tip] @(심벌) 사용  (0) 2023.06.22
[자료구조] 해시테이블(Hash Table), Dictionary  (0) 2023.06.22
[자료구조] 연결 리스트(Linked List)  (0) 2023.06.22