From 239ccdd278c650083995327bea01dbc5ca3f3d74 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Sun, 25 Jan 2026 10:28:22 +0800 Subject: [PATCH] =?UTF-8?q?day09-=E5=BC=95=E7=94=A8=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2=EF=BC=88=E5=90=91=E4=B8=8A?= =?UTF-8?q?=E8=BD=AC=E5=9E=8B=E5=92=8C=E5=90=91=E4=B8=8B=E8=BD=AC=E5=9E=8B?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/inmind/duotai08/downcast/Animal.java | 9 ++++++++ .../src/com/inmind/duotai08/downcast/Cat.java | 12 ++++++++++ .../com/inmind/duotai08/downcast/Demo10.java | 23 +++++++++++++++++++ .../src/com/inmind/duotai08/downcast/Dog.java | 12 ++++++++++ .../src/com/inmind/duotai08/test/Demo09.java | 12 +++++----- 5 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 day10/src/com/inmind/duotai08/downcast/Animal.java create mode 100644 day10/src/com/inmind/duotai08/downcast/Cat.java create mode 100644 day10/src/com/inmind/duotai08/downcast/Demo10.java create mode 100644 day10/src/com/inmind/duotai08/downcast/Dog.java diff --git a/day10/src/com/inmind/duotai08/downcast/Animal.java b/day10/src/com/inmind/duotai08/downcast/Animal.java new file mode 100644 index 0000000..9eb1bc8 --- /dev/null +++ b/day10/src/com/inmind/duotai08/downcast/Animal.java @@ -0,0 +1,9 @@ +package com.inmind.duotai08.downcast; + +public abstract class Animal { + String name; + int age; + + //吃的行为 + public abstract void eat(); +} diff --git a/day10/src/com/inmind/duotai08/downcast/Cat.java b/day10/src/com/inmind/duotai08/downcast/Cat.java new file mode 100644 index 0000000..1f4d8c6 --- /dev/null +++ b/day10/src/com/inmind/duotai08/downcast/Cat.java @@ -0,0 +1,12 @@ +package com.inmind.duotai08.downcast; + +public class Cat extends Animal{ + @Override + public void eat() { + System.out.println("猫吃鱼"); + } + + public void catchMouse(){ + System.out.println("猫抓老鼠"); + } +} diff --git a/day10/src/com/inmind/duotai08/downcast/Demo10.java b/day10/src/com/inmind/duotai08/downcast/Demo10.java new file mode 100644 index 0000000..abe8748 --- /dev/null +++ b/day10/src/com/inmind/duotai08/downcast/Demo10.java @@ -0,0 +1,23 @@ +package com.inmind.duotai08.downcast; +/* +学习的对象的向上转型和向下转型,也就是引用数据类型的数据类型转换(自动转换和强制类型转换) + +注意:多态的向下转型时,一定要是对应的类型才能转换,否则会报错java.lang.ClassCastException(类型转换异常) + */ +public class Demo10 { + public static void main(String[] args) { + //多态的写法 + Animal a = new Dog();//父类引用指向子类对象,对象的向上转型,非常安全 + a.eat(); + //a.watchDoor();//编译看左边 + + //现在a就是一只狗,我想让它看门 + Dog dog = (Dog) a; + dog.watchDoor(); + + //现在a是一个动物,让它变成猫,抓老鼠 + Cat cat = (Cat) a; + cat.catchMouse(); + + } +} diff --git a/day10/src/com/inmind/duotai08/downcast/Dog.java b/day10/src/com/inmind/duotai08/downcast/Dog.java new file mode 100644 index 0000000..4116617 --- /dev/null +++ b/day10/src/com/inmind/duotai08/downcast/Dog.java @@ -0,0 +1,12 @@ +package com.inmind.duotai08.downcast; + +public class Dog extends Animal{ + @Override + public void eat() { + System.out.println("狗吃骨头"); + } + + public void watchDoor(){ + System.out.println("狗看门"); + } +} diff --git a/day10/src/com/inmind/duotai08/test/Demo09.java b/day10/src/com/inmind/duotai08/test/Demo09.java index 80d7a1a..a69e864 100644 --- a/day10/src/com/inmind/duotai08/test/Demo09.java +++ b/day10/src/com/inmind/duotai08/test/Demo09.java @@ -13,12 +13,12 @@ public class Demo09 { //以上代码没有多态,所以有50个子类,重复的代码就要编写或封装50次,太繁琐 //多态写法 - Employee e1 = new Teacher(); - Employee e2 = new Assistant(); - dTWork(e1); - dTWork(e2); - dTWork(teacher); - dTWork(assistant); + Employee e1 = new Teacher();//引用数据类型向上转型 + Employee e2 = new Assistant();//引用数据类型向上转型 + dTWork(e1);//引用数据类型向上转型 + dTWork(e2);//引用数据类型向上转型 + dTWork(teacher);//引用数据类型向上转型 + dTWork(assistant);//引用数据类型向上转型 } //定义一个父类类型接收子类对象,多态的写法