gpt4 book ai didi

java - java中不同对象的数组?

转载 作者:行者123 更新时间:2023-11-30 02:22:12 25 4
gpt4 key购买 nike

例如,假设我有一个名为“Animals”的类,一个名为“Dogs”的子类,另一个名为“Cats”的子类,以及一个用于运行程序的类。

class Animals{
int size;
String name;
}
class Dogs extends Animals{
void bark(){
System.out.println("Woff");
}
}

class Cats extends Animals{
void meow(){
System.out.println("Meow");
}
}

在 Test 类中,我想创建一个包含它们的数组。我应该如何声明它们以便我也可以访问它们的方法?例如,我在想这样的事情:

class Test{
public static void main(String[] args){
Animals [] array = new Animals[2];
array[0] = new Dogs();
array[1] = new Cats();
array[0].bark();
}
}

但似乎不是这样工作的,因为 Java 将该方法识别为 Animals 的方法。

最佳答案

你需要使用instanceof来检查动物是猫还是狗,然后安全转换并调用好的方法:

public static void main(String[] args){
Animals [] array = new Animals[2];
array[0] = new Dogs();
array[1] = new Cats();
array[0].bark();
}

public static void makeSound(Animal[] animals){
for(Animal a : animals){
if(a instanceof Dogs){
((Dogs)a).bark();
}else if(a instanceof Cats){
((Cats)a).meow();
}
}

这将打印:

Woff
Meow
<小时/>

更好的做法:

class Animals{
int size;
String name;
abstract void makeSound();
}
class Dogs extends Animals{
void makeSound(){
System.out.println("Woff");
}
}

class Cats extends Animals{
void makeSound(){
System.out.println("Meow");
}
}

关于java - java中不同对象的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com