java三角形创建子类_如何创建子类,以便参数属于Java中的子类类型
我有抽象的父類Animal:
public abstract class Animal
{
public abstract T copyAnimal(T animal);
}
然后我想創(chuàng)建一個(gè)子類Duck但是要覆蓋copyAnimal我想使用Duck作為參數(shù),這樣:
public class Duck extends Animal
{
@Override
public Duck copyAnimal(Duck duck)
{
return copyOfDuck;
}
}
這當(dāng)然給了我一個(gè)編譯器錯(cuò)誤,說(shuō)明該方法沒(méi)有被覆蓋.這就是說(shuō)我怎么能調(diào)整這個(gè)代碼,這樣我就不必將Animal傳遞給copyAnimal()方法來(lái)保存轉(zhuǎn)換等等,因?yàn)樗雌饋?lái)很丑陋,需要額外的運(yùn)行時(shí)檢查.或者甚至可能嗎?如果沒(méi)有,那么最優(yōu)雅的解決方案是什么?
解決方法:
public abstract class Animal>
{
public abstract A copyAnimal(A animal);
}
然后:
public class Duck extends Animal
請(qǐng)注意,您不能將其限制為“自我”類型(例如,它可能是Duck extends Animal< Pig>);你只需要聲明你想要聲明的類.
標(biāo)簽:java,polymorphism
來(lái)源: https://codeday.me/bug/20190731/1587670.html
總結(jié)
以上是生活随笔為你收集整理的java三角形创建子类_如何创建子类,以便参数属于Java中的子类类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。