第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

強制子類以自身為參數(shù)覆蓋方法

強制子類以自身為參數(shù)覆蓋方法

繁星點點滴滴 2021-12-30 17:07:55
我有一個抽象事件類,它有一個抽象方法:abstract boolean intersect(Event object);此方法應(yīng)根據(jù)特定子類的實例變量檢查 Event 子類的兩個實例是否相交。我想強制 Event 的任何子類覆蓋其實例變量上的方法。設(shè)計這個的最佳方法是什么?這是我當(dāng)前的實現(xiàn),這是錯誤的,因為我正在更改參數(shù)類型。我也嘗試過使用接口,但遇到了類似的類型參數(shù)問題。@Overridepublic boolean intersect(SubClassEvent e2) {    boolean intersects = false;    if(this.weekDay == e2.weekDay) {        if (this.getStartTime() < e2.getStartTime() && this.getEndTime() > e2.getStartTime()) {            intersects = true;        }        else if(this.getStartTime() >= e2.getStartTime() && this.getStartTime() < e2.getEndTime()){            intersects = true;        }    }    return intersects;}
查看完整描述

2 回答

?
偶然的你

TA貢獻1841條經(jīng)驗 獲得超3個贊

如果使抽象類泛型,則可以允許子類將自己指定為參數(shù)類型:


abstract class Event<T extends Event<T>> {

    abstract boolean intersect(T object);

}

子類將能夠?qū)⑺鼈冏约旱念愋吐暶鳛閰?shù)。除非您的代碼庫使用原始類型,否則這應(yīng)該有效。


class SubClassEvent extends Event<SubClassEvent> {

     @Override

    boolean intersect(SubClassEvent object){return true;}

}

這個(或者更確切地說是例外)的限制將是原始類型和其他類型事件的事件,這可以允許其他參數(shù)類型。


查看完整回答
反對 回復(fù) 2021-12-30
?
汪汪一只貓

TA貢獻1898條經(jīng)驗 獲得超8個贊

這在 Java 中是不可能的。考慮您有SubClassEvent實現(xiàn)方法的子類boolean intersect(SubClassEvent e2)。然后,如果它有一個進一步的子類SubSubClassEvent extends SubClassEvent,它將根據(jù)繼承在 Java 中的工作方式boolean intersect(SubClassEvent e2)從繼承方法SubClassEvent。

SubSubClassEvent不必覆蓋該方法,因為該方法在其超類中是非抽象的SubSubClass。但即使SubSubClassEvent要覆蓋該方法,也必須使用簽名覆蓋它boolean intersect(SubClassEvent)。如果它實現(xiàn)了一個帶有簽名boolean intersect(SubSubClassEvent)的方法boolean intersect(SubClassEvent),在 Java 方法覆蓋規(guī)則下,它不會被視為從其超類中覆蓋該方法。

因此,SubSubClassEventEventintersect方法不將自己的類型作為參數(shù)類型的子類,違反了您的條件。


查看完整回答
反對 回復(fù) 2021-12-30
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號