04
10

 

인터페이스 (interface)

 - 클래스와 비슷하지만 메서드, 이벤트, 인덱서, 프로퍼티만을 가질 수 있다.

 - 구현을 가질 수 없다.

 - 인터페이스는 접근 제한 한정자를 사용할 수 없고 모든 것이 public으로 선언된다.

 - 인터페이스를 상속하는 인터페이스도 만들 수 있다.

 

 - C#에서는 클래스의 다중상속을 허용하지 않지만, 인터페이스의 다중상속은 허용한다.

다중상속은 불가능하지만,
포함(Containment) 기법을 통해 기능을 클래스로 만들어서 필드로 선언하는 방법도 있다.

 

추상 클래스 (abstract class)

 - 인터페이스와 달리 구현을 가질 수 있다.

 - 한정자는 명시하지 않으면 private로 선언된다. ( 일반 클래스와 동일 )

 - 추상 메소드를 가질 수 있다.

 - 추상 클래스를 상속하는 추상 클래스도 만들 수 있다.

 

추상 메소드 (abstract method)

 - 추상 메서드는 반드시 public, protected, internal, protected internal 한정자 중 하나로 선언해야 한다.

 - 추상 클래스를 상속받는 클래스는 반드시 추상 메서드를 구현해야 한다.

 - 추상 클래스가 다른 추상 클래스를 상속하는 경우 구현하지 않아도 된다.

 

인터페이스와 추상 클래스 비교

  인터페이스 추상 클래스
인스턴스화 X X
다중상속 O X
구현부 가질 수 없다. 가질 수 있다.
(추상 메소드는 가질 수 없다)
목적  여러 클래스 간의 규약을 통해
구현 객체가 같은 동작을 한다는 것을 보장
상속을 강제하기 위함
상위 클래스의 기능을 이용하거나 확장함

 

COMMENT