From 61d11ecc4d889d775ede31bb1803bca4560f3532 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Mon, 27 Jul 2026 16:17:06 +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 --- .../src/com/inmind/object_cast10/Demo11.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 day10/src/com/inmind/object_cast10/Demo11.java diff --git a/day10/src/com/inmind/object_cast10/Demo11.java b/day10/src/com/inmind/object_cast10/Demo11.java new file mode 100644 index 0000000..cef3223 --- /dev/null +++ b/day10/src/com/inmind/object_cast10/Demo11.java @@ -0,0 +1,44 @@ +package com.inmind.object_cast10; +/* +如何在代码中判断出当前的多态父类类型是不是对应的子类类型呢? +instanceof 关键字 + 多态类型 instanceof 子类类型 会有一个返回值 boolean + true: 多态类型就是子类类型,(animal是一个猫) + false:多态类型就不是子类类型,(animal不是一个猫) + */ +public class Demo11 { + public static void main(String[] args) { + //来一只猫和狗 + Cat cat = new Cat(); + Dog dog = new Dog(); + eat(cat); + eat(dog); + } + //推导多态的好处:以不变应万变 + public static void eat(Animal animal) {//Animal a = cat|dog; 多态 + System.out.println("动物开始吃:"); + animal.eat(); + //动物吃完之后,想让它干点活,如果是狗看门,如果是猫抓老鼠 + if (animal instanceof Dog) {//转换成指定子类对象,调用独有功能 + Dog dog = (Dog) animal; + dog.lookHome(); + } + if (animal instanceof Cat) {//使用instanceof,避免了向下转型的风险!! + Cat cat = (Cat) animal; + cat.catchMouse(); + } + } + + + /*//定义一个猫吃东西的方法 + public static void eat(Cat cat) {//Cat cat = cat; + System.out.println("动物开始吃:"); + cat.eat(); + } + //定义一个狗吃东西的方法 + public static void eat(Dog dog) {//Dog dog = dog; + System.out.println("动物开始吃:"); + dog.eat(); + }*/ + +}