一个奇怪的事情发生在人身上

Abu*_*mad 2 java oop inheritance subclass superclass

在以下java代码中

public class Person {
    int age = 18;
}

class Student extends Person {
    public Student() {
        this.age = 22;
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.doSomthing();
    }

    void doSomthing() {
        System.out.println(this.age);
        System.out.println(super.age);// Here is something weird, at least for me till rightNow()
    }
}  
Run Code Online (Sandbox Code Playgroud)

为什么super.age值为22,与子类的年龄值相同,是不是应该是18;
任何帮助表示赞赏.
提前致谢.

Sai*_*Sai 7

年龄是超类中的一个领域.在子类的构造函数中,当你说this.age = 22时,你正在更新超类中的实例变量.

尝试以下...我没有一个方便的编译器,但我认为它可能会做你期望的.

public class Person {
    int age = 18;
}

class Student extends Person {

    int age; // Hides the super variable

    public Student() {
        this.age = 22;
    }

    public static void main(String[] args) {
        Student student = new Student();
        student.doSomthing();
    }

    void doSomthing() {
        System.out.println(this.age);
        System.out.println(super.age);
    }
}  
Run Code Online (Sandbox Code Playgroud)