From 28fad57350f522404db7df47c6f96fe819c81782 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Fri, 9 Oct 2026 10:35:16 +0800 Subject: [PATCH] =?UTF-8?q?day10--=E7=94=A8instanceof=E5=85=B3=E9=94=AE?= =?UTF-8?q?=E5=AD=97=E8=BF=9B=E8=A1=8C=E7=B1=BB=E5=9E=8B=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day10/src/com/inmind/object_cast09/Demo10.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/day10/src/com/inmind/object_cast09/Demo10.java b/day10/src/com/inmind/object_cast09/Demo10.java index c59e2b6..883354d 100644 --- a/day10/src/com/inmind/object_cast09/Demo10.java +++ b/day10/src/com/inmind/object_cast09/Demo10.java @@ -7,6 +7,11 @@ package com.inmind.object_cast09; 对象的向上转型和向下转型:就是引用数据类型的类型转换 注意:多态的向下转型,一定要是对应的类型才能转换,否则就报ClassCastException(类型转换异常) +-------------------------------------- +如何在代码中判断出当前多态父类类型是不是对应的子类类型呢?? +instanceOf 关键字返回一个boolean + true:就是该类型 + false:不是 */ public class Demo10 { public static void main(String[] args) { @@ -14,12 +19,16 @@ public class Demo10 { Animal animal = new Cat();//小范围的猫对象赋值给大范围的动物类型(安全的向上转型) //将这个动物转为猫 - Cat cat = (Cat) animal;//大范围的动物对象赋值给小范围的猫类型(不安全的向下转型) - cat.catchMouse(); + if (animal instanceof Cat) { + Cat cat = (Cat) animal;//大范围的动物对象赋值给小范围的猫类型(不安全的向下转型) + cat.catchMouse(); + } //将这个动物转为狗 - Dog dog = (Dog) animal;//此处报出了java.lang.ClassCastException - dog.watchDoor(); + if (animal instanceof Dog) { + Dog dog = (Dog) animal;//此处报出了java.lang.ClassCastException + dog.watchDoor(); + } } }