2 回答
TA贡献1810条经验 获得超4个赞
所以我不明白的是两者
AnimatesPaint
都AnimatesPosition
已经实现了createAnimator
。
是的,这些实现相互冲突。如果您可以这样做,则生成的类的类型将需要公开两个createAnimator
仅通过返回类型区分的方法。Java 不允许您拥有仅通过返回类型区分的重载,因此您不能这样做。出于重载目的,方法签名不包括返回类型。
即使它们具有相同的返回类型 ( Animator
),您也会有两个具有完全相同签名的重载,但您不能这样做。
如果它们要在同一个类中实现,则它们需要是单独的方法(例如,具有可以区分的单独签名)。
在您提出的评论中:
但冲突不是因为该方法已经被
AnimatesPaint
and重写了AnimatesPosition
吗?这样实现类ScreenElement
不需要实现createAnimator
方法,所以不会发生冲突。
不,因为类本身将这些方法公开(或者更确切地说,需要)作为其签名的一部分。基本上,假设您可以创建该类并且您有它的一个实例,s
. 会做什么呢s.createAnimator(300L)
?编译器应该选择哪一个?
类的公共类型由其所有公共成员组成,包括它实现的所有接口的所有公共成员。因此,在类型级别,两个接口不可能实现具有相同签名的方法。
TA贡献1805条经验 获得超9个赞
如果您调用 ScreenElements createAnimator() 方法,它应该使用哪一个?这就是编译器所抱怨的。您需要告诉它调用该方法时要做什么。根据代码我不确定。因此,您认为 ScreenElement 需要实现 create animator 方法是正确的,这样编译器就知道调用该方法时要做什么。
添加回答
举报