> Java > java지도 시간 > Java 하위 클래스는 비공개 필드를 상속합니까?

Java 하위 클래스는 비공개 필드를 상속합니까?

Susan Sarandon
풀어 주다: 2024-12-11 10:23:12
원래의
713명이 탐색했습니다.

Do Java Subclasses Inherit Private Fields?

하위 클래스가 개인 필드를 상속합니까: Java 수수께끼

Java에서 상속 개념은 종종 간단합니다. 그러나 하위 클래스의 비공개 필드 주제는 다소 모호합니다.

질문:

하위 클래스는 상위 클래스의 비공개 필드를 상속합니까?

최초 답변:

객체 지향 프로그래밍의 "일반적인 OOP 방식"이라면 대답은 "아니요"입니다. Private 필드는 일반적으로 하위 클래스에서 액세스할 수 없습니다.

Java 문서:

JLS(Java 언어 사양)에서는 "private으로 선언된 클래스의 멤버는 상속되지 않습니다. 해당 클래스의 하위 클래스별로."

인터뷰어의 인수:

JLS 인용에도 불구하고 일부는 비공개 필드가 비록 간접적이기는 하지만 하위 클래스에 의해 상속된다고 주장할 수 있습니다. 이들은 이러한 필드가 하위 클래스 객체 내에 존재하며 리플렉션이나 다른 수단을 통해 액세스할 수 있다고 주장합니다.

면접관을 뒷받침하는 주장:

  • 객체 구성: 하위 클래스의 객체는 비공개를 포함하여 상위 클래스에서 상속된 모든 필드를 논리적으로 포함해야 합니다. 필드.
  • Reflection API: 클래스에 자체 메타데이터와 기타 클래스 메타데이터를 검사하고 수정할 수 있는 기능을 제공하는 Java Reflection API를 사용하여 비공개 필드에 액세스할 수 있습니다.

JLS의 설명:

여기서 중요한 차이점은 객체에 대한 상속과 클래스 상속.

  • 객체 상속: 하위 클래스의 객체에는 상위 클래스의 비공개 필드 인스턴스가 포함되어 있습니다. 이러한 필드는 하위 클래스에서 액세스할 수 없습니다.
  • 클래스 상속: 클래스 자체는 비공개 필드를 상속하지 않습니다. 하위 클래스에는 상위 클래스의 비공개 멤버에 대한 개념이 없습니다.

결론:

하위 클래스의 객체는 상위 클래스의 비공개 필드를 상속하지만 하위 클래스 자체는 이를 상속합니다. 아니다. 객체 수준 상속과 클래스 수준 상속 간의 이러한 구별은 Java의 상속 모델을 이해하는 데 중요합니다. 면접관의 주장에도 불구하고 JLS는 해당 문제에 대해 명확한 정의를 제공합니다.

위 내용은 Java 하위 클래스는 비공개 필드를 상속합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿