这个应该这么说吧,不能说父类对象引用调用的子类方法,只能说是调用了子类重写了父类的方法。如果是父类中没有的那么当然不能调用,就好比说,你是你父亲的儿子,你的姓继承自你父亲,但是你的名字是自己的,不属于从父亲那继承的了。。我猜想你说的是另一种情况吧,就是多态。
public Person{
public void name(){
System.out.println("这是父类的方法!!");
}
}
public Son extends Person{
@Override
public void name(){
System.out.println("这是子类复写父类的方法!!!");
}
public void show(){
System.out.println("这是子类自己的方法!!");
}
public class Test{
public static void main(String[] args) throws IOException {
Person p = new Son();
p.name();
}
}
这里虽然是父类引用指向子类的实例对象,但是只能调用父类中有的方法,不过因为子类中复写了此方法,所以此处应输出为 "这是子类复写父类的方法!!!"
而根本调用不到子类的show()方法; |