- 向上转型,父类引用指向子类对象
Animal animal = new Dog(); - animal可以调用父类的所有成员,但是不能调用子类特有属性和方法,是由编译类型决定的;
- 运行方法查找是从子类先开始查找的,因为运行看运行类型;
父类
public class Animal {
public String name;
public int age;
public void eat(){
System.out.println("父类方法");
}
}
子类
public class Dog extends Animal{
public String name;
public int age;
public void eat(){
System.out.println("子类方法");
}
public void info(){
System.out.println("子类特有方法");
}
}
调用类
public class Test {
public static void main(String[] args) {
Animal animal = new Dog();
// animal.info();//调用子类特有方法报错
animal.eat();
}
}
输出结果:
子类方法