내 수업 implements
이 인터페이스라면 상속을 따르고 있다고 말할 수 있습니까? 나는 클래스가 extends
다른 클래스라면 상속 이라는 것을 알고 있습니다.
내 수업 implements
이 인터페이스라면 상속을 따르고 있다고 말할 수 있습니까? 나는 클래스가 extends
다른 클래스라면 상속 이라는 것을 알고 있습니다.
답변:
업데이트 :이 답변을 수정했습니다. 부를 가치가있는 의견에서 여러 가지 좋은 점이 제기되었습니다.
내 클래스가 인터페이스를 구현하면 상속을 따르고 있다고 말할 수 있습니까?
"상속을 따른다"라는 말의 의미가 완전히 명확하지는 않습니다. 약간 다른 질문을하겠습니다.
상속이란 무엇입니까?
이들은 미묘하게 다릅니다. 혼란 스럽기 때문에 불행합니다.
이 미묘한 차이로 인해 일반적으로 어떤 혼란이 발생합니까?
사람들이 상속을 구현 세부 사항을 공유하는 메커니즘으로 생각하기 때문에 혼란이 발생할 수 있습니다. 그것이 비록 입니다 이러한 메커니즘은, 그 메커니즘을 공유하여 작동 회원 . 해당 멤버는 구현이 필요하지 않습니다! 우리가 볼 수 있듯이, 그것들은 추상적 일 수 있습니다.
이 혼동을 피하기 위해 Java와 C # 스펙이 인터페이스 메소드와 클래스 간의 관계를 설명하기 위해 "상속"이외의 단어를 사용한 경우 개인적으로 더 행복 할 것입니다. 그러나 그것들은 그렇지 않으며, 우리는 사양에 반대 하지 않고 사양 에서 추론 해야합니다.
Java에서는 인터페이스 멤버를 구현하는 클래스가 인터페이스 멤버를 상속합니까?
예, 일부는 있습니다. 편의를 위해 여기에 인용 한 Java 사양 섹션 8.4.8을 참조하십시오.
클래스 C는 직접 수퍼 클래스와 직접 수퍼 인터페이스를 상속받으며 다음의 모든 것이 참인 추상 및 기본 메소드 m : [...]
클래스가 인터페이스를 구현한다고하면 클래스는 해당 인터페이스 의 추상 및 기본 메소드를 상속합니다 . (물론, 다음 조건을 생략했습니다. 자세한 내용은 사양을 참조하십시오. 특히, 인터페이스의 멤버를 구현하는 클래스는 해당 멤버를 상속 한 것으로 간주 되지 않습니다 . 다시 말하지만 혼란 스럽습니까?)
우리는 일반적으로 자바에서 클래스가 인터페이스에서 상속한다고 말합니까?
일반적으로 클래스 가 인터페이스를 구현 한다고 말합니다 . 위에서 언급했듯이 클래스는 인터페이스에서 멤버 를 상속 할 수 있지만 여전히 인터페이스에서 상속한다고는 말할 수 없습니다. 혼란 스럽습니다.
이 미묘한 차이가 일상적인 일에서 중요합니까?
일반적으로 그렇지 않습니다. 이러한 종류의 사양 분석은 라인업 개발자보다 컴파일러 작성자에게 더 유용합니다. "상속"의 정확한 정의를 얻는 것보다 인터페이스 사용시기를 이해하는 것이 더 중요합니다.
java
영업 이익은 다른 의미하지 않는이, 정답 그래서 java
:-)
상속 은 수퍼 클래스에 대한 새로운 서브 클래스를 작성하는 것을 의미합니다. 인터페이스에 대해 새 클래스를 작성하면 해당 인터페이스가 구현 됩니다. 이전 인터페이스를 기반으로 새 인터페이스를 작성하면 해당 인터페이스 가 확장 됩니다.
세 가지 가능성 모두에 적용되는 유일한 올바른 용어는 subtyping 입니다. 모든 하위 유형이 하위 클래스 인 것은 아닙니다.
와 서브 클래스 , 당신
인터페이스를 사용 하면 선언 된 메소드 를 구현 하여 계약을 완료 합니다.
그것이 고전적인 방법입니다. 이제 Java 8 에서는 인터페이스가 혼합되어 있습니다.
모든 메소드가 기본 구현을 가진 인터페이스를 구현하면 여전히 '구현'또는 확장으로 계산됩니까? 나는 말할 수 없었다. 이 경우는 상당히 멀리 가져 오기 때문에 (실제로 상태 비 저장 다중 상속을 활성화) 서브 클래스에서만 '상속'을 사용합니다.