的实例例如,我有Animal类,Cat类(Bird,Dog,Fish ...),它扩展了Animal。现在我想宣布宠物类,这也是动物类,我希望它可以用任何现有的动物来构建,例如猫。是否可以扩展类
所以我需要构造是这样的:
class Pet extends Animal{
private String nickname;
private Animal kind;
Pet(Animal a, String nickname){
<...>;
this.nickname = nickname;
}
}
编辑: 我想是这样的:
Cat cat = new Cat();
Animal pet = new Pet(cat, "Foo");
if (pet instanceof Pet){
if (pet.kind instanceof Cat){
Pet.sayMeow();
}
}
是不是意味着我只需要Animal()
(这是受保护的)构造函数< ...>?
问问自己:什么是'宠物'应该通过'动物'做?你现在什么都不做,这就是为什么这个问题不清楚(不清楚你传递'动物'的理由是什么)。 – Tom
@Tom说了些什么:关于你想达到什么的更多信息会很好。目前,这听起来像你可以使用'interface'的东西。 – domsson
如果你想说要采用现有的'Animal'实例并追溯**将该实例**转换为'Pet',则不能这样做。你可以创建一个新的'Pet',它是从一个'Animal'实例初始化的,但它将是分开的。实例的类在创建时被锁定。 (我们可以对[接口]有不同的视图,有些代码可能只知道它是'Animal',其他代码可能知道它是'Cat',但*实例*在创建时具有特定的类集。 –