我被指示创建两个互相重载的方法。一个应该将对象存储在一个数组中,另一个应该将对象存储在另一个数组中。作业内容如下:
重做您的动物园,使其能够分别存放野生动物和家养动物。 因此,您的 Zoo 类将可能/大概有两个不同的 add() 方法。 一个接收实现野生动物接口(interface)的 Animal 对象,另一个接收实现家养动物接口(interface)的 Animal 对象的 add() 方法。
我该怎么做?
Class Zoo {
...
void add(Animal foobar instanceof Wild){
[...]
}
[...]
不会编译。也没有
Class Zoo {
...
void add(Animal foobar implements Wild){
[...]
}
[...]
实际上,可以使用instanceof在add()中执行if语句,但他特别要求两个互相重载的add()方法。我该怎么做呢?或者,这是不可能的吗?我的老师试图用“可能/大概”来扰乱我?
最佳答案
关键是提供两个 add()
方法,一个采用一种类型的参数(野生动物 动物类型),另一个采用另一种类型的参数参数(家养动物类型)。
您现在应该有足够的信息来编写此代码。
附录 (2016 年 3 月)
例如,您可以使用以下代码:
class Animal { ... }
interface Wildlife { ... }
interface Domestic { ... }
class WildAnimal
extends Animal
implements Wildlife
{ ... }
class DomesticAnimal
extends Animal
implements Domestic
{ ... }
class Zoo
{
void add(WildAnimal beast) { ... }
void add(DomesticAnimal beast) { ... }
}
两个 Zoo.add()
方法都接受 Animal
类型的参数。但一个接受一个实现了 Wildlife
接口(interface)的 Animal
对象,另一个接受
实现 Domestic
接口(interface)的 Animal
对象。
关于java - 如何根据对象的实例进行重载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33375637/