Java: 변수 숨기기, 메서드 재정의
In the case of method overriding, overriding methods completely replace the inherited methods but in variable hiding, the child class hides the inherited variables instead of replacing them which basically means that the object of Child class contains both variables but Child’s variable hides Parent’s variable.
source
다음 예제를 통해 이론을 테스트할 수 있습니다.
public class Main {
public static void main(String[] args) {
Child child = new Child();
// child
System.out.println(((Parent) child).getName());
// parent
System.out.println(((Parent) child).name);
// child
System.out.println(child.getName());
// child
System.out.println(child.name);
}
}
class Parent {
String name = "parent";
public String getName() {
return name;
}
}
class Child extends Parent {
String name = "child";
@Override
public String getName() {
return name;
}
}
getName()
의 메서드 Parent
는 Child
의 getName()
로 재정의되므로 ((Parent) child).getA()
및 child.getA()
모두 출력 "하위"를 얻습니다.parent.name
는 child.name
에 의해서만 숨겨지므로 ((Parent) child).name
는 "부모"를, child.name
는 "자식"을 얻습니다.getName()
클래스의 메서드Child
를 다음과 같이 주석 처리하면 getName()
의 원인 메서드parent
가 재정의되지 않고 ((Parent) child).getName()
및 child.getName()
둘 다 "부모"가 됩니다.((Parent) child).name
는 "부모"를 가져오고, child.name
는 "자식"을 가져옵니다. 왜냐하면 name
는 여전히 숨겨져 있기 때문입니다.public class Main {
public static void main(String[] args) {
Child child = new Child();
// parent
System.out.println(((Parent) child).getName());
// parent
System.out.println(((Parent) child).name);
// parent
System.out.println(child.getName());
// child
System.out.println(child.name);
}
}
class Parent {
String name = "parent";
public String getName() {
return name;
}
}
class Child extends Parent {
String name = "child";
// @Override
// public String getName() {
// return name;
// }
}
더 많은 기술 관련 기사를 볼 수 있습니다here.
Reference
이 문제에 관하여(Java: 변수 숨기기, 메서드 재정의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aldora/java-variable-hiding-method-overriding-51b4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)