java - 为什么接口的方法的访问修饰符只能是public不能是protected?
PHP中文网
PHP中文网 2017-04-17 17:32:01
0
5
1062

为什么抽象类的方法的访问修饰符可以是public和protected,而接口的方法的访问修饰符只能是public?

或者说,

接口的方法的访问修饰符为什么不能是protected?

PHP中文网
PHP中文网

认证0级讲师

모든 응답(5)
PHPzhong

개인 추측:

  • 언어 디자이너는 이것이 인터페이스 액세스 모델의 복잡성을 증가시킨다고 느낄 수도 있습니다.

  • 인터페이스 구현을 담당하는 클래스가 매우 어려울 것입니다. 구현과 인터페이스가 동일한 패키지에 없으면 보호된 메소드를 구현해야 합니까?

아래에서 두 가지 예를 사용하여 설명하겠습니다. 첫 번째 예는 보호된 인터페이스 방법이 의미가 없다고 느끼게 합니다. 다른 하나는 전혀 말이 안 된다고 생각하게 만듭니다.

예를 들어 sample.interface 패키지 아래에 ISomething가 있습니다.

으아아아

다음 경우는 이상합니다.

으아아아

심지어 말이 안 되는 일:

으아아아

이렇게 하면 클래스 구현과 인터페이스가 하나의 패키지에 포함됩니다. 이게 도대체 뭐죠? 여러 인터페이스를 구현해야 할 수도 있지만 별도로 구현할 수는 없습니다. . .

阿神

인터페이스는 시스템 아키텍처 설계 방법에서 더 많은 역할을 하며 주로 모듈 간의 통신 계약을 정의하는 데 사용됩니다.
추상 클래스는 코드 구현에서 역할을 하며 주로 코드 재사용을 위해 사용됩니다.

小葫芦

추상과 인터페이스는 서로 다른 상황에서 사용됩니다. 전자는 매개변수 상속을 전제로 재정의하지만 대상은 직접 또는 간접 상위 클래스이며 보호된 권한이 허용됩니다. 인터페이스는 일반적으로 리스너와 같은 다른 클래스의 콜백에 사용됩니다. 보호된 권한이 있는 경우 리스너 인스턴스를 가져오더라도 해당 메서드를 가져올 수 없으므로 콜백 자체는 의미가 없습니다.
약간 개인적인 의견이니 틀린 부분이 있으면 지적해주세요

迷茫

인터페이스란 무엇인가요? 인터페이스는 외부 세계와의 상호 작용에 사용되는 인터페이스로 작성됩니다. 보호된 상태로 작성하면 외부 세계와 어떻게 상호 작용할 수 있습니까?

인터페이스는 전달된 객체가 특정 메서드를 구현해야 한다고 규정하는 데 사용됩니다. 구현된 메서드를 호출할 수 없다면 이 규정의 의미는 무엇인가요? 어차피 부를 수는 없는데, 무엇을 입든 대상은 똑같기 때문이다.

Peter_Zhu

인터페이스는 구현용입니다. 상속관계도 아니고 직계가족도 아닌 외부인입니다. 통화머니=1^n이면 그 사람에게 돈을 줄 수도 없고, 그 사람도 그것을 누릴 수도 없습니다.
보호는 상속받은 하위 클래스에게 표시됩니다. 자신의 사람이라면 모든 돈을 그 사람에게 상속하면 됩니다.
인터페이스가 보호로 설정되어 있으면 여주인이거나 여주인이 되어 불법입니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿