java三角形创建子类_如何创建子类,以便参数属于Java中的子类类型

我有抽象的父类Animal:

public abstract class Animal

{

public abstract T copyAnimal(T animal);

}

然后我想创建一个子类Duck但是要覆盖copyAnimal我想使用Duck作为参数,这样:

public class Duck extends Animal

{

@Override

public Duck copyAnimal(Duck duck)

{

return copyOfDuck;

}

}

这当然给了我一个编译器错误,说明该方法没有被覆盖.这就是说我怎么能调整这个代码,这样我就不必将Animal传递给copyAnimal()方法来保存转换等等,因为它看起来很丑陋,需要额外的运行时检查.或者甚至可能吗?如果没有,那么最优雅的解决方案是什么?

解决方法:

public abstract class Animal>

{

public abstract A copyAnimal(A animal);

}

然后:

public class Duck extends Animal

请注意,您不能将其限制为“自我”类型(例如,它可能是Duck extends Animal< Pig>);你只需要声明你想要声明的类.

标签:java,polymorphism

来源: https://codeday.me/bug/20190731/1587670.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值