feat(class22): 多态调用,instanceof对象类型检测

- 新增 Tortoise 和 Wolf 类,继承自 Animal 类并重写 run 方法
- Tortoise 类增加独有的 shrinkHead 方法
- 新增 Test 类,演示多态和强制类型转换的用法- 实现 go 方法,展示如何根据对象类型调用不同方法
This commit is contained in:
2025-07-14 23:54:41 +08:00
parent 3bcce7c9e7
commit a714712f96
4 changed files with 64 additions and 0 deletions

8
src/class22/Animal.java Normal file
View File

@@ -0,0 +1,8 @@
package class22;
public class Animal {
public void run(){
System.out.println("动物会跑~~~");
}
}

36
src/class22/Test.java Normal file
View File

@@ -0,0 +1,36 @@
package class22;
public class Test {
public static void main(String[] args) {
Animal a1 = new Tortoise();
a1.run();
// 多态无法调用子类独有的方法
// a1.shrinkHead();
Tortoise t1 = (Tortoise)a1;
t1.shrinkHead();
// 强制转换
// Wolf test1= (Wolf)a1;//运行时异常
System.out.println("=========================");
Wolf w = new Wolf();
go(w);
Tortoise t = new Tortoise();
go(t);
}
public static void go(Animal w){
System.out.println("开始......");
w.run();
if (w instanceof Tortoise) {
Tortoise t=(Tortoise)w;
t.shrinkHead();
} else if (w instanceof Wolf) {
Wolf w1=(Wolf)w;
w1.run();
}
}
}

12
src/class22/Tortoise.java Normal file
View File

@@ -0,0 +1,12 @@
package class22;
public class Tortoise extends Animal {
@Override
public void run() {
System.out.println("🐢跑的贼慢~~");
}
public void shrinkHead(){
System.out.println("🐢缩头了~~");
}
}

8
src/class22/Wolf.java Normal file
View File

@@ -0,0 +1,8 @@
package class22;
public class Wolf extends Animal {
@Override
public void run() {
System.out.println("狼跑的贼溜~");
}
}