From b9ea2c1322c9bbe38c432a5eced458b6626e63c5 Mon Sep 17 00:00:00 2001 From: xuxin <840198532@qq.com> Date: Mon, 27 Jul 2026 15:57:00 +0800 Subject: [PATCH] =?UTF-8?q?day10-=E5=AF=B9=E8=B1=A1=E7=9A=84=E5=90=91?= =?UTF-8?q?=E4=B8=8A=E5=90=91=E4=B8=8B=E8=BD=AC=E5=9E=8B=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/inmind/duotai_member09/Demo09.java | 4 ++++ .../src/com/inmind/object_cast10/Animal.java | 5 +++++ day10/src/com/inmind/object_cast10/Cat.java | 11 ++++++++++ .../src/com/inmind/object_cast10/Demo10.java | 21 +++++++++++++++++++ day10/src/com/inmind/object_cast10/Dog.java | 12 +++++++++++ 5 files changed, 53 insertions(+) create mode 100644 day10/src/com/inmind/object_cast10/Animal.java create mode 100644 day10/src/com/inmind/object_cast10/Cat.java create mode 100644 day10/src/com/inmind/object_cast10/Demo10.java create mode 100644 day10/src/com/inmind/object_cast10/Dog.java diff --git a/day10/src/com/inmind/duotai_member09/Demo09.java b/day10/src/com/inmind/duotai_member09/Demo09.java index 1de814b..b82f3b0 100644 --- a/day10/src/com/inmind/duotai_member09/Demo09.java +++ b/day10/src/com/inmind/duotai_member09/Demo09.java @@ -28,6 +28,10 @@ Person p = new Student();//这里才使用了多态 一定要注意:编译看左边,运行看右边。 多态中:代码的书写时,父类中没有的变量和方法是不能写的,因为编译看左边,编译器会直接报错 + +多态的核心好处:“以不变,应万变”---通过抽象定义统一接口,应对具体实现的变化。它让代码简洁,灵活,更 +容易扩展。 + */ public class Demo09 { public static void main(String[] args) { diff --git a/day10/src/com/inmind/object_cast10/Animal.java b/day10/src/com/inmind/object_cast10/Animal.java new file mode 100644 index 0000000..86cadde --- /dev/null +++ b/day10/src/com/inmind/object_cast10/Animal.java @@ -0,0 +1,5 @@ +package com.inmind.object_cast10; + +public abstract class Animal { + public abstract void eat(); +} diff --git a/day10/src/com/inmind/object_cast10/Cat.java b/day10/src/com/inmind/object_cast10/Cat.java new file mode 100644 index 0000000..8898a14 --- /dev/null +++ b/day10/src/com/inmind/object_cast10/Cat.java @@ -0,0 +1,11 @@ +package com.inmind.object_cast10; + +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/object_cast10/Demo10.java b/day10/src/com/inmind/object_cast10/Demo10.java new file mode 100644 index 0000000..17528d3 --- /dev/null +++ b/day10/src/com/inmind/object_cast10/Demo10.java @@ -0,0 +1,21 @@ +package com.inmind.object_cast10; +/* +对象的向上转型和向下转型:就是引用数据类型的类型转换 + +注意:多态的向下转型,一定要是对应的类型才能转换,否则就报ClassCastException(类型转换异常) + */ +public class Demo10 { + public static void main(String[] args) { + //多态,来一只猫 + //父类引用指向子类对象(多态) + Animal animal = new Cat();//向上转型 + animal.eat();//编译时看左边,运行时看右边 + //我就要这个动物,抓老鼠(把它转成猫再抓老鼠) + Cat cat = (Cat) animal;//向下转型 + cat.catchMouse(); + + //我就要这个动物,看门(把它转成狗再看门) + Dog dog = (Dog) animal;//报错,此时animal引用的是Cat对象,无法转成Dog对象,会出现java.lang.ClassCastException + dog.lookHome(); + } +} diff --git a/day10/src/com/inmind/object_cast10/Dog.java b/day10/src/com/inmind/object_cast10/Dog.java new file mode 100644 index 0000000..7373122 --- /dev/null +++ b/day10/src/com/inmind/object_cast10/Dog.java @@ -0,0 +1,12 @@ +package com.inmind.object_cast10; + +public class Dog extends Animal{ + @Override + public void eat() { + System.out.println("狗吃骨头"); + } + + public void lookHome(){ + System.out.println("狗看家"); + } +}