这个如何去进行修改?

public class Person{
String name = "Person";
public void printName() {
System.out.println(name);
}
}
public class Dad extends Person{
String name = "Dad";
}
Person dad = new Dad();
dad.printName();
我们期望能够打印出Dad
但实际上会打印出Person
如何修改?


public class Dad extends Person{
    String name = "Dad";

    @Override
    public void printName() {
        System.out.println(name);
    }
}

Dad子类重写父类Person的printName方法,实际创建的是谁的对象,调用的方法就是谁的

这种不难的,你先认识一下继承这一块基础知识

class Dad extends Person{
    String name = "Dad";

    /**
     * 重写父类Person的printName()方法,输出Dad类的name
     */
    @Override
    public void printName() {
        System.out.println(name);
    }
}

你刚才那种写法,子类默认会调用父类的printName方法,而父类的printName只会打印他本身的name,子类Person的name并没有带过去,所以你最开始的写法,无论实际创建的对象是哪个,打印出来的都会是父类的name