public class Test { public static void main(String[] args) { show(new Cat()); // 以 Cat 对象调用 show 方法 show(new Dog()); // 以 Dog 对象调用 show 方法 Animal a = new Cat(); // 向上转型 a.eat(); // 调用的是 Cat 的 eat Cat c = (Cat)a; // 向下转型 c.work(); // 调用的是 Cat 的 work } public static void show(Animal a) { a.eat(); // 类型判断 if (a instanceof Cat) { // 猫做的事情 Cat c = (Cat)a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog)a; c.work(); } } } abstract class Animal { abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void work() { System.out.println("看家"); } }
时间: 2024-02-14 11:36:11 浏览: 66
这段代码展示了Java中的多态性,通过向上转型将Cat对象转换成Animal类型,然后调用eat()方法,实际上是调用了Cat类中的eat()方法。同时,通过使用instanceof运算符判断对象的类型,再进行向下转型,可以调用Cat或Dog类中特定的方法,如work()方法。这种方法可以增加代码的灵活性和可重用性。
相关问题
创建一个类Cat包含属性name,在构造方法中进行初始化,添加一个方法show(),用以打印name属性的值。创建一个CatTest类,添加main方法,实现创建一个ArrayList,向其中添加几个Cat对象,遍历该集合,并且对每个Cat对象调用show()方法
以下是Java代码实现:
Cat.java
```
public class Cat {
private String name;
public Cat(String name) {
this.name = name;
}
public void show() {
System.out.println("The cat's name is " + name);
}
}
```
CatTest.java
```
import java.util.ArrayList;
public class CatTest {
public static void main(String[] args) {
ArrayList<Cat> catList = new ArrayList<>();
// 添加几个Cat对象到ArrayList中
catList.add(new Cat("Tom"));
catList.add(new Cat("Jerry"));
catList.add(new Cat("Luna"));
// 遍历ArrayList,并调用每个Cat对象的show()方法
for (Cat cat : catList) {
cat.show();
}
}
}
```
运行CatTest的main方法,输出如下:
```
The cat's name is Tom
The cat's name is Jerry
The cat's name is Luna
```
java9.创建一个类Cat 包含属性name,在构造方法中进行初始化 添加一个方法show(),用以打印name属性的值 创建一个类CatTest,添加main方法,实现创建一个ArrayList,向其中添加几个Cat对象,遍历该集合,并且对每个Cat对象调用show()方法 .
好的,以下是实现代码:
Cat.java
```java
public class Cat {
private String name;
public Cat(String name) {
this.name = name;
}
public void show() {
System.out.println("Cat name is " + name);
}
}
```
CatTest.java
```java
import java.util.ArrayList;
public class CatTest {
public static void main(String[] args) {
ArrayList<Cat> cats = new ArrayList<>();
cats.add(new Cat("Tom"));
cats.add(new Cat("Jerry"));
cats.add(new Cat("Luna"));
for (Cat cat : cats) {
cat.show();
}
}
}
```
在CatTest类中,我们创建了一个ArrayList,然后向其中添加了3个Cat对象。接着使用for循环遍历这个集合,对于每个Cat对象调用show()方法,输出其name属性的值。
阅读全文