인터페이스를 구현하는 클래스와 그 인터페이스 사이의 관계가 있습니까?

StackOverflow https://stackoverflow.com/questions/1050146

  •  20-08-2019
  •  | 
  •  

문제

이 클래스 계층 구조를 고려하십시오.

  • Book extends Goods
  • Book implements Taxable

우리가 알다시피, 서브 클래스와 슈퍼 클래스 (IS-A) 사이에는 관계가 있습니다.

Q : "IS-A"와 같은 관계가 있습니까? Book 그리고 Taxable?

좋은 대답이지만 "IS-A"는 또한 Book 그리고 Taxable, 하지만 "IS-A"는 간의 관계입니다 클래스, 그리고 인터페이스는 수업이 아닙니다!

도움이 되었습니까?

해결책

예. 관계는 정확히 동일합니다

책도 과세 대상입니다.

편집하다

인터페이스는 Java와 일치하는 아티팩트입니다 (아마도 C# 모르는 C#). interface 예어.

OO 인터페이스에는 클래스가 '커밋 된'공연이며 더 이상 아무것도없는 작업 세트가 있습니다. 객체 클래스와 클라이언트 간의 계약과 같습니다.

가지고 있지 않은 OO 프로그래밍 언어 interface 키워드에는 여전히 클래스 인터페이스 OO 개념이 있습니다.

다른 팁

글쎄, "지원의 지원"이 있습니다. 개인적으로 나는 "is-a", "can-do"등 니모네틱스가 매우 유용하다는 것을 알지 못합니다. 나는 기존의 행동을 전문으로하는 것 또는 행동 자체를 구현하는지 여부에 관계없이 유형이 허용하는 것에 대해 생각하는 것을 선호합니다. 추상화와 같은 유사성은 새는 경향이 있습니다. 인터페이스 상속과 구현 상속 사이의 다른 것이 무엇인지 알고 있다면, 그것을 표현하기 위해 추가 어구가 필요하지 않을 것입니다.

"처럼 행동합니다 ..."

그것이 내가 말하는 것입니다. 무언가는 아니지만 무언가처럼 행동합니다. 또는 대안으로 "할 수있는 것"이지만 행동보다 더 구체적입니다.

관계는 언급 된대로 될 것입니다. '구현'

이러한 관계 이름은 문장의 사용에서 비롯됩니다. "Book 'Is-A'상품"은 따옴표와 하이픈없이 작성할 수 있으며 의미가 있습니다. 마찬가지로, 책 '도장'과세 대상은 인용문없이 쓸 수 있습니다.

한 클래스가 다른 클래스를 연장한다고 말하면 '상속'으로 알려진 강한 관계 선이 있습니다. 이는 한 아이가 부모를 연장 할 때 부모가 동물이면 부모 수업에서 무언가를 물려받을 수 있어야합니다. 동물. 그러나 수업이 다른 클래스를 구현할 때, 아동 클래스는 계약을 이행하려고 시도하고 있습니다. (어린이 수업이 상속 될 경우) 그리고 그 후에는 약간의 추상을 만들 수 있습니다.

그래서 나에게 확장은 상속 및 계약 구현의 인터페이스입니다.

이것은해야합니다 :

public static boolean implementsInterface(Object object, Class interf){
    return interf.isInstance(object);
}

예를 들어,

 java.io.Serializable.class.isInstance("a test string")

True로 평가합니다.

에서: 객체가 인터페이스를 구현하는지 테스트하십시오

모든 흥분은 무엇입니까? 다중 물음표와 다중 느낌표?

과세 대상은 인터페이스이지만 책이 과세 대상이라고 말할 수 있다는 것이 귀찮습니까? 진정 해주세요.

클래스의 인터페이스와 슈퍼 클래스와의 클래스 관계에 대한 언어에는 다른 키워드가 있지만, 그 관계의 개념적 특성은 동일하므로 동일한 영어 용어를 사용하여 그것을 설명하는 것이 합리적입니다. 책은 책이 좋은 것처럼 과세됩니다. 용어를 더 가깝게 가져 오려면 책은 과세 대상입니다. 괜찮아.

Book implements Taxable

여기서도 관계가 있습니다 Book 그리고 Taxable ~이다

책 '은 과세 대상입니다

이것을 참조하십시오. 당신은 그것을 볼 수 있습니다

상속에 대해 이야기 할 때 가장 일반적으로 사용되는 키워드는 확장 그리고 구현. 이 단어는 하나의 객체 여부를 결정합니다 IS-A 다른 유형.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top