Ssssong += Dev

[C#] 추상클래스와 인터페이스 본문

개발/공부

[C#] 추상클래스와 인터페이스

ssong_dev 2022. 6. 13. 11:05

추상클래스, 추상함수(abstract)

기능이 여기서 완성되지 않음. 상속하는 자식에서 기능을 완성시켜 주어야 함.

추상함수를 하나 이상 포함하고 있는 클래스이다.

미완성된 클래스이기 때문에 해당 클래스를 상속받는 자식들은 완성되지 않은 함수들을 완성시켜 주어야 한다.

추상클래스 자체로는 완성되지 않았기 때문에 객체를 찍어낼 수 없으며 인스턴스화 할 수도 없다.

추상함수(추상메서드)는 구현이 이루어지지 않고 정의만 할 수 있다.

클래스 다이어그램에서 << abstract >> 로 클래스를 표시하며 추상 메서드는 void { abstract } 이렇게 표시한다.

'해당 클래스를 구현하는 틀'이라 볼 수 있으며 협업할 때 중요하게 다뤄진다.

 

인터페이스(interface)

해당 추가 기능을 꼭 구현하겠다는 약속. 인터페이스 기능의 구현은 실체화라고 한다.

유니티에서 IPointerClickHandler 와 같은 기능을 생각하면 된다.

다중 상속이 가능하며 해당 기능들을 반드시 가지고 있을 것을 약속한다.

 

가상함수(virtual)

자식함수에서 override해서 사용할 수 있는 완성된 함수이다.

완성된 함수기 때문에 추상함수나 인터페이스와 달리 필수적으로 재정의하지 않아도 된다.

부모클래스에서 virtual로 선언해 두고,

필요한 자식클래스에서 override하거나 override하지 않으면 부모클래스 함수를 그대로 사용한다.

 

 

 

추상클래스와 인터페이스의 차이

 

추상클래스는 클래스의 틀, 인터페이스는 기능의 추가라 생각하면 된다.

 

https://holjjack.tistory.com/41

 

[C#] interface 와 abstract class 의 차이

C# 인터페이스와 추상클래스의 차이점 Interface Abstract Class 접근 지정자 - 함수에 대한 접근 지정자를 가질수 없습니다. - 기본적으로 public 입니다. - 함수에 대한 접근 지정자를 가질 수 있습니다.

holjjack.tistory.com