이 기사는 Java 객체 지향 개념 필드 숨기기 (숨겨진 멤버 변수)의 기본 개념에 대해 설명합니다.
이 문제를 논의하기 전에 매우 간단한 코드를 살펴 보겠습니다. 방법의 데이터 결과는 무엇입니까?
/*** @Author Hollis 17/9/27. */ public class fieldOverriding {public static void main (String [] args) {sub c1 = new sub (); System.out.println ( "C1.S :" + C1.S); System.out.println ( "C1.S :" + C1.S); System.out.println ( "C1.Say :" + c1.say ()); Super C2 = 새로운 sub (); System.out.println ( "C2.S :" + C2.s); System.out.println ( "C2.S :" + C2.s); }} 클래스 슈퍼 {문자열 s = "슈퍼"; 문자열 says () {return "Hello Super"; }} class sub는 super {string s = "sub"; 문자열 says () {return "hello sub"; }}출력 결과 :
C1.S : Sub C1.Say : Hello Sub C2.S : Super C2.Say : Hello Sub
당신이 생각하는 것과 동일합니까? 동일하다면 계속 읽을 필요가 없습니다. 이것은 어렵지 않기 때문에 알고 있습니다.
Java로 다시 작성하십시오
Java의 재 작성 및 과부하에 대한 깊은 이해로 다음과 같이 소개했습니다.
Java와 상위 클래스의 서브 클래스에 동일한 이름과 매개 변수 목록이있는 두 가지 방법이있는 경우. 동일한 방법 서명이 있으므로 서브 클래스의 새로운 메소드는 상위 클래스의 원래 메소드를 무시합니다.
이전에는 Java가 상속에서 방법을 다시 작성했기 때문에 이것은 또한 Java의 동적 다형성을 반영합니다.
멤버 변수는 Java에서 다시 작성할 수 있습니까?
위의 Java 재 작성 소개는 다시 쓰기가 방법을 지칭한다고 명시합니다. 회원 변수는 언급되지 않았습니다. 위의 예를 통해 실제로 멤버 변수가 다시 작성되지 않았다는 것을 알 수 있습니다.
따라서 Java에서는 멤버 변수가 다시 작성되지 않습니다. 여기에 또 다른 단어가 있습니다.
Java의 멤버 변수 숨기기
Java 문서의 숨겨진 도메인의 정의 :
클래스 내에서 슈퍼 클래스의 필드와 동일한 이름을 가진 필드는 유형이 다르더라도 슈퍼 클래스 필드를 숨 깁니다. 서브 클래스 내에서 슈퍼 클래스의 필드는 간단한 이름으로 참조 할 수 없습니다. 대신, 필드는 슈퍼를 통해 액세스해야합니다. 일반적으로 코드를 읽기 어렵게 만들기 때문에 필드를 숨기는 것이 좋습니다.
중국어로 번역 :
클래스에서 서브 클래스의 멤버 변수가 부모 클래스의 멤버 변수와 동일한 이름을 갖는 경우 유형이 다른 경우에도 동일한 이름 만 있습니다. 상위 클래스의 멤버 변수는 숨겨져 있습니다. 서브 클래스에서, 부모 클래스의 멤버 변수는 참조로 단순히 액세스 할 수 없습니다. 대신, 상위 클래스에 의해 숨겨진 멤버 변수는 부모 클래스에 대한 참조에서 얻어야합니다. 일반적으로 코드를 읽기 어렵게 만들기 때문에 멤버 변수를 숨기는 것이 좋습니다.
실제로, 간단히 말해서, 서브 클래스는 부모 클래스를 덮어 쓰는 멤버 변수를 덮어 쓰지 않으므로 방법과 같은 다형성을 사용하여 멤버 변수에 대한 액세스에 액세스 할 수 없습니다.
숨겨진 멤버 변수에 액세스하는 방법
실제로, 이전 예제와 지금 회원 변수 소개를 통해 이미 숨겨진 멤버 변수에 액세스하는 방법을 이미 알고 있습니다. Super c2 = new Sub(); System.out.println(" c2.s : " + c2.s);。 또는 System.out.println(((Super)c1).s); .
요약
위는 Java의 메소드를 다시 작성하고 편집자가 귀하에게 소개 한 멤버 변수의 숨기는 것입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!