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