多态的向下转型:
1. 语法:子类类型 引用名 = (子类类型) 父类引用。
2. 只能强转父类的引用,不能强转父类的对象。
3. 要求父类的引用必须指向的是当前目标类型的对象。
4. 向下转型后,可以调用子类类型中的所有成员。
1. 动物类
public class Animal {
String name = "动物";
int age = 10;
public void sleep(){
System.out.println("睡觉");
}
public void run(){
System.out.println("跑步");
}
public void eat(){
System.out.println("吃饭");
}
public void show(){
System.out.println("hello, 你好");
}
}
2. Cat类
继承动物类,并且有自己特有方法 catchMouse抓老鼠方法。
package org.example.poly_.details_;
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void catchMouse() {//cat特有的方法,猫抓老鼠
System.out.println("猫抓老鼠");
}
}
3. Main测试类
public static void main(String[] args) {
//向上转型 : 父类的引用指向了子类的对象
//语法 : 父类类型 引用名 = new 子类类型();
Animal animal = new Cat();
animal.eat();
animal.run();
animal.sleep();
animal.show();
//向下转型
//编译类型Cat, 运行类型Cat
Cat cat = (Cat) animal;
cat.catchMouse();//猫抓老鼠,不转型调用不了。
}