2010-06-13 4 views

답변

1

this 링크가 도움이 될 수 있습니다.

+0

인터페이스 클래스에서는 구현 자 클래스의 각 함수를 구현해야하지만 추상 클래스에서는 일부 메서드가 이미 추상 클래스로 구현 될 수 있으므로 필요하지 않습니다. –

+0

@GG, 멋진 링크 – Starx

3

먼저 인터페이스는 클래스가 아닙니다. 인터페이스는 기능을 지정할 수는 없지만 필수 사물의 이름 만 지정할 수 있습니다.

인터페이스는 인터페이스에서 상속 한 모든 클래스에서 공개적으로 사용할 수 있어야하는 메서드와 속성을 정의합니다. 인터페이스에는 구현 코드가 없으며 클래스의 비공개 측면에 대해서는 아무 것도 말하지 않습니다. 인터페이스는 클래스가 아니라 오히려 더 많은 계약입니다.

추상 클래스는 실제 클래스입니다. 추상 클래스의 유일한 제한은 직접 인스턴스화 할 수 없다는 것입니다. 오히려 추상 클래스에서 상속받은 서브 클래스를 인스턴스화해야합니다.

언제 사용하는지에 관해서는, 객체가 실제로 공통 조상을 공유 할 때 추상 클래스로부터 상속하는 것을 고려해야한다고 말하고 싶습니다. 예를 들어 '세일즈맨'과 '프로그래머'둘 다 추상 '직원'클래스에서 상속 된 경우 논리가됩니다.

인터페이스는 클래스의 공용 인터페이스가 어떤 모습인지 알고 싶지만 구현면에서 공통성을 공유 할 필요가없는 경우에 유용합니다. 예를 들어 C#에서는 IEnumerable 인터페이스를 구현하는 모든 클래스를 반복 할 수 있으며 MoveNext 및 Current를 확실히 구현합니다. 이것은 목록이나 배열과 같은 콜렉션이거나 데이터베이스 나 웹 서비스를 호출하거나 심지어 난수를 생성하는 생성자 (상태 머신) 일 수 있습니다. IEnumerable의 구현은 인터페이스에 지정된 메서드 및 속성의 이름 이외의 다른 모든 공통 코드를 공유 할 필요가 없습니다.

C#에서는 하나의 클래스에서만 상속받을 수 있지만 원하는만큼 많은 인터페이스를 구현할 수 있습니다. 또한 C# 인터페이스에서는 관습에 따라 캡틴 'I'로 시작하지만 엄격하게 말하자면 필수는 아닙니다.

관련 문제