if(animal[i] instanceof Dog){ Dog dog = (Dog)animal[i]; dog.lookHome(); dog.swim(); }
时间: 2024-06-07 12:06:24 浏览: 39
这是一个Java中的if语句,判断animal数组中的第i个元素是否是Dog类的实例。如果是,则将该元素强制转换为Dog类型,并调用Dog类中的lookHome()和swim()方法。这段代码的作用是遍历animal数组中的元素,如果是Dog类型的实例,则让狗看家和游泳。如果不是Dog类型的实例,则不做任何操作。
相关问题
public class TestPolymorphism { public static void main(String[] args) { show(new Dog()); show(new Cat()); show(new Lion()); } public static void show(Animal a){ if(a instanceof Dog){ Dog c=(Dog) a; c.eat(); }else if(a instanceof Cat){ Cat c=(Cat) a; c.eat(); }else if(a instanceof Lion){ Lion c=(Lion) a; c.eat(); } } abstract class Animal{ abstract void eat(); } class Dog extends Animal{ public void eat(){ System.out.println("eating bread..."); } } class Cat extends Animal{ public void eat(){ System.out.println("eating rat..."); } } class Lion extends Animal{ public void eat(){ System.out.println("eating meat..."); } } }这个代码哪里有问题,怎么改?
这段代码使用了 instanceof 运算符和强制类型转换来实现多态,但是这种做法不够优雅,容易出错,并且增加了代码的复杂性。可以使用方法重载和方法覆盖来实现多态,代码如下所示:
```
public class TestPolymorphism {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
Animal animal3 = new Lion();
show(animal1);
show(animal2);
show(animal3);
}
public static void show(Animal a) {
a.eat();
}
static abstract class Animal {
abstract void eat();
}
static class Dog extends Animal {
public void eat() {
System.out.println("eating bread...");
}
}
static class Cat extends Animal {
public void eat() {
System.out.println("eating rat...");
}
}
static class Lion extends Animal {
public void eat() {
System.out.println("eating meat...");
}
}
}
```
这段代码使用了 Animal 类型的变量来引用不同的动物对象,并且调用了 Animal 类的 eat() 方法,具体的实现由子类来完成。这样可以避免使用 instanceof 和强制类型转换,代码更加简洁清晰。
public class Animal { public String noise() { return "Animal"; } public static void main(String[] args) { Cat cat = null; Animal animal = new Dog(); if (animal instanceof Cat) { //instanceof是一个运算符, //判断对象是否是某个类型 cat = (Cat) animal; System.out.println(cat.noise()); } else { System.out.println("animal is not Cat's instance"); } } } class Dog extends Animal { public String noise() { return "Dog"; } } class Cat extends Animal { public String noise() { return "Cat"; } }
这是一段 Java 代码。它创建了一个名为 Animal 的父类,并在其中定义了一个 noise() 方法。然后创建了 Dog 和 Cat 类,并继承了 Animal 类。在 main 方法中,它创建了一个 Animal 对象,并将其赋值给一个 Dog 类型的变量。然后使用 instanceof 运算符判断该对象是否是 Cat 类型的实例。如果是,则将其转换为 Cat 类型,并调用 noise() 方法。如果不是,则输出“animal is not Cat's instance”。
阅读全文