[C#] 인터페이스와 상속C#/C#정리2021. 9. 20. 09:17
Table of Contents
인터페이스
간단하게 계약(contract)라고 정의되며
구현 없이 메소드 선언만 포함된 클래스 문법과 비슷한 면이 있다.
관례적으로 인터페이스 이름에는 I접두사를 붙인다.
인터페이스를 추상메소드만 0개 이상 담고 있는 추상 클래스라 생각해도 무방하다.
인터페이스의 특징
- 선언은 있고 정의는 없다
- 다중 인터페이스가 가능하다.
- 인터페이스의 메소드를 자식 클래스에 구현할 떄는 반드시 public 접근 제한자를 명시해야한다.
- 인터페이스에는 프로퍼티도 넣을 수 있다.
그럼 왜 인터페이스를 쓸까?
인터페이스에 속한 메소드는 모두 가상 메소드에 속한다.
이미 가상 메소드기 때문에 virtual,override 예약어를 지정하지 못하게한다. → 굳이 지정할 필요가 없기 때문이다.
상속은 한개 밖에 하지못하지만 인터페이스는 다중 인터페이스가 가능하다.
인터페이스를 이용한 콜백 구현
인터페이스에 포함된 메소드는 상속된 클래스에서 반드시 구현한다는 보장이 있다.
내가 이해하기로는 내가 어떤 코드를 짜고 다른 누군가가 봐야할 때 설계적인 관점으로 이런 메소드들이 들어가있어야한다 라는것을 명시해 주기위한 명세서 정도 라고 생각된다.
디자인 패턴 쪽에서는 중요시 여겨진다고 한다.
나처럼 이해했지만 다른 방법으로 사용한 링크
상속
클래스끼리의 필드나 메소드를 상속할 수 있다.
클래스 다중 상속은 지원하지 않는다.(인터페이스는 가능!)
public class Computer
{
bool powerOn;
public void Boot() {}
public void Shutdown() {}
public void Reset() {}
}
public class Notebook : Computer
{
bool fingerScan;
public bool HasFingerScanDevice() { return fingerScan; }
public void CloseLid()
{
Shutdown(); // Computer의 메소드를 호출한것!
}
}
반응형
'C# > C#정리' 카테고리의 다른 글
[C#] 정적멤버, 인스턴스멤버 (0) | 2021.09.20 |
---|---|
[C#] as, is 차이점 (0) | 2021.09.20 |
[C#] 익명메소드와 람다식 (0) | 2021.09.20 |
[C#] Event - Delegate를 사용한 이벤트 처리 (0) | 2021.08.31 |
[C#] Callback - 콜백은 어떻게 사용하는가? (0) | 2021.08.31 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!