day10--对象的向上向下转型代码实现

This commit is contained in:
xx
2026-10-09 10:24:10 +08:00
parent a0edab37e5
commit e75cd9ae65
5 changed files with 52 additions and 0 deletions
@@ -0,0 +1,4 @@
package com.inmind.object_cast09;
public class Animal {
}
@@ -0,0 +1,8 @@
package com.inmind.object_cast09;
public class Cat extends Animal{
public void catchMouse(){
System.out.println("猫在抓老鼠");
}
}
@@ -0,0 +1,25 @@
package com.inmind.object_cast09;
/*
向上转型:就是将子类赋值给父类,(多态的格式),非常安全直接写即可
向下转型是不安全的,原本是什么类型,那么只能转为该类型。(对象的强制类型转换,是有注意点的!)
对象的向上转型和向下转型:就是引用数据类型的类型转换
注意:多态的向下转型,一定要是对应的类型才能转换,否则就报ClassCastException(类型转换异常)
*/
public class Demo10 {
public static void main(String[] args) {
//使用多态来描述一只猫(父类引用指向子类对象)
Animal animal = new Cat();//小范围的猫对象赋值给大范围的动物类型(安全的向上转型)
//将这个动物转为猫
Cat cat = (Cat) animal;//大范围的动物对象赋值给小范围的猫类型(不安全的向下转型)
cat.catchMouse();
//将这个动物转为狗
Dog dog = (Dog) animal;//此处报出了java.lang.ClassCastException
dog.watchDoor();
}
}
@@ -0,0 +1,8 @@
package com.inmind.object_cast09;
public class Dog extends Animal{
public void watchDoor(){
System.out.println("狗在看门");
}
}