向上转型
- 基本语法:
编译类型() = new 运行类型()
- 可以调用的
方法
由编译类型决定,因此不可以调用子类特有的
方法 - 调用的顺序和之前分析
super
那里一样,都是先调用子类的,子类没有再看父类
public class Animal {public void eat() {System.out.println("吃");}public void sleep() {System.out.println("睡");}public void run() {System.out.println("跑");}public void show() {System.out.println("你好");}
}
public class Cat extends Animal {public void eat() {System.out.println("猫吃鱼");}private void CathchMouse() {System.out.println("猫抓老鼠");}
}
public class PolyDetail {public static void main(String[] args) {Animal animal = new Cat();Object object = new Cat();animal.eat();animal.run();animal.sleep();animal.show();}
}
- 分析
- animal在调用
eat
的时候是调用的Cat
里面的,因为是new Cat()
- animal不能调用Cat里面特有的
CatchMouse
这个方法
多态练习题
