public class Main{
public static void main(String[] args) {
Animal a=new Cat();
Animal b=new Animal();
Cat c=new Cat();
a.p1();
c.p1();
c.p2();
b.p1();
System.out.println(a instanceof Cat);
System.out.println(c instanceof Cat);
System.out.println(a instanceof Animal);
System.out.println(c instanceof Animal);
System.out.println(b instanceof Animal);
System.out.println(b instanceof Cat);
}
}
class Animal{
public void p1() {
System.out.println("父类方法1");
}
}
class Cat extends Animal{
public void p1() {
System.out.println("子类重写了1");
}
public void p2() {
System.out.println("子类特有方法2");
}
}
测试结果
子类重写了1
子类重写了1
子类特有方法2
父类方法1
true
true
true
true
true
false
由结果可以得出以下结论:
父类new子类的引用a,只能调用子类从父类中继承的方法,不能调用子类私有的方法(a.p2()会报错),如果子类重写了父类的方法,则会调用子类重写后的方法。