先看代码
父类
package duotai;
public class Animal {
public void eat() {
System.out.println("动物吃东西");
}
public void drink() {
System.out.println("动物喝水");
}
}
子类
package duotai;
public class Dog extends Animal{
@Override
public void eat() {
// TODO Auto-generated method stub
// super.eat();
System.out.println("狗吃肉");
}
public void talk() {
System.out.println("狗散步");
}
}
测试类
package duotai;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Animal animal = new Dog();
animal.eat();
animal.drink();
// animal.talk();
}
}
控制台打印信息
把talk方法注释去掉再次运行
//控制台显示 Exception in thread "main" java.lang.Error: Unresolved compilation problem: The method talk() is undefined for the type Animal at duotai.test.main(test.java:10)
翻译如下
未解决的编译问题:
对于 Animal 类型,talk() 方法未定义
对于父类引用指向子类对象:
子类新增的方法父类的引用是无法访问到的
子类重写父类的方法是可以访问的,并优先使用子类重写的方法 ----动态链接
子类未重写的方法父类引用也是可以访问的(通过super调用)



