Java: 변수 숨기기, 메서드 재정의

7711 단어 java
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() 의 메서드 ParentChildgetName() 로 재정의되므로 ((Parent) child).getA()child.getA() 모두 출력 "하위"를 얻습니다.
parent.namechild.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.

좋은 웹페이지 즐겨찾기