如何根据对象的实例重载?

时间:2015-10-27 18:18:23

标签: java operator-overloading instanceof

我已被指示创建两种相互重载的方法。一个应该将一个对象存储在一个数组中,另一个应该将一个对象存储在另一个数组中。作业如下:

重做您的动物园,使其能够分别存放野生动物和家畜。 因此,您的Zoo类可能/可能有两种不同的add()方法。 接收实现野生动物接口的Animal对象和接收实现家畜接口的Animal对象的add()方法。

我该怎么做?

Class Zoo {
...
void add(Animal foobar instanceof Wild){
[...]
}
[...]

不会编译。

也没有
Class Zoo {
...
void add(Animal foobar implements Wild){
[...]
}
[...]

实际上,可以使用instanceof在add()中执行if语句,但他特别要求两个add()方法相互重载。我该怎么做呢?或者,这是不可能的,我的教导试图通过大概说/可能会弄乱我?

1 个答案:

答案 0 :(得分:2)

关键是提供两种add()方法,一种采用一种参数(野生生物动物类型),另一种采用其他类型的参数(a 国内动物类型。)

你现在应该有足够的信息来编码。

附录 (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类型的参数。但是,一个接受Animal对象实现Wildlife接口,另一个接受 实现Animal接口的Domestic对象。