2011-04-13 3 views
2

글쎄, 나는 추상적 인 것처럼 인터페이스에서 멤버를 안다. 그러나 사실 그들은 추상적인가? 그 키워드를 사용할 필요가 없기 때문에 암시 적이거나 기술적으로 추상적이 아닌지 확신 할 수 없습니다. 희망적이라고 생각하십니까?인터페이스 멤버가 추상적입니까?

답변

5

추상이 아닙니다. 인터페이스로 정의 된 계약입니다. "추상"은 수업에만 적용되는 구체적인 의미를 지닙니다.

그들은 클래스의 추상 멤버와 매우 유사하게 동작합니다. 인터페이스를 구현하는 모든 유형은 멤버를 구현하거나 추상화해야합니다.

0

그들은 정의 된 동작이 없다는 의미에서 암시 적으로 추상적입니다. 회원의 서명 만 기술된다.

나는 일리노이에서 어떻게 보일지 잘 모르겠다. (아마도 실제로 알 필요는 없을 것이다.)

2

인터페이스를 구현하는 클래스는 모든 구성원을 구현하거나 자체를 abstract으로 선언해야하므로 개념 상 추상입니다.

abstract과 같이 기술적 인 의미에서 이들은 abstract이 아닙니다.

2

아니요. 추상 메소드는 암시 적으로 가상입니다.

인터페이스 구현이 가상 일 필요는 없습니다. (는 사실.이 불가능할 것이다) 명시 적으로 구현하는 동일 부재 서명 선언 '충돌'인터페이스 (예를 인터페이스하는 것이 가능하다 vtable single dispatch [1], 단일 VTABLE 슬롯 회 충전 될 수 없기 때문에)와

[1] 가상 상속을위한 고전적 구현 방법

+1

+1. 잘 부름, 그것은 중요한 차이입니다. 실제로 상충되는 * 구현을 구현할 수도 있습니다. 여기서 더 파생 된 클래스는 부모 클래스에 구현 된 인터페이스를 다시 구현합니다. Hilarity가 계속됩니다. –

+0

너무 사실입니다. 그러나 명시 적 인터페이스 구현을 사용하면 클라이언트는 일반적으로 알지 못합니다. 왜냐하면 그는 자신이 기대하는 IInterestingInterface 만 가져 오기 때문입니다. IMHO 명시 적 인터페이스는 다소 쓸모 없게되었습니다. 3.5 클래스에서 고정 된 _closures_ 또는 Java 스타일의 정적이 아닌 내부 클래스 (_nested_)를 보완하기 위해 클래스에서 사용해야 할 필요성을 느꼈습니다. 오, 우리가 누락 된 기분은 Enumerables, Queryables, Observables 사이의 혼란으로 크게 보완 될 것입니다. Observables는 미묘하게 다르며 새로운 재미있는 의미 론적 놀라움을 창출 할 것입니다. 미래의 증거! – sehe

관련 문제