2 回答

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
所以我不明白的是兩者
AnimatesPaint
都AnimatesPosition
已經(jīng)實(shí)現(xiàn)了createAnimator
。
是的,這些實(shí)現(xiàn)相互沖突。如果您可以這樣做,則生成的類的類型將需要公開兩個createAnimator
僅通過返回類型區(qū)分的方法。Java 不允許您擁有僅通過返回類型區(qū)分的重載,因此您不能這樣做。出于重載目的,方法簽名不包括返回類型。
即使它們具有相同的返回類型 (?Animator
),您也會有兩個具有完全相同簽名的重載,但您不能這樣做。
如果它們要在同一個類中實(shí)現(xiàn),則它們需要是單獨(dú)的方法(例如,具有可以區(qū)分的單獨(dú)簽名)。
在您提出的評論中:
但沖突不是因?yàn)樵摲椒ㄒ呀?jīng)被
AnimatesPaint
and重寫了AnimatesPosition
嗎?這樣實(shí)現(xiàn)類ScreenElement
不需要實(shí)現(xiàn)createAnimator
方法,所以不會發(fā)生沖突。
不,因?yàn)轭惐旧韺⑦@些方法公開(或者更確切地說,需要)作為其簽名的一部分?;旧?,假設(shè)您可以創(chuàng)建該類并且您有它的一個實(shí)例,s
.?會做什么呢s.createAnimator(300L)
?編譯器應(yīng)該選擇哪一個?
類的公共類型由其所有公共成員組成,包括它實(shí)現(xiàn)的所有接口的所有公共成員。因此,在類型級別,兩個接口不可能實(shí)現(xiàn)具有相同簽名的方法。

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個贊
如果您調(diào)用 ScreenElements createAnimator() 方法,它應(yīng)該使用哪一個?這就是編譯器所抱怨的。您需要告訴它調(diào)用該方法時要做什么。根據(jù)代碼我不確定。因此,您認(rèn)為 ScreenElement 需要實(shí)現(xiàn) create animator 方法是正確的,這樣編譯器就知道調(diào)用該方法時要做什么。
添加回答
舉報(bào)