簡體   English   中英

約束超類不能覆蓋子類的值

[英]constraint a super class can not override the value of subclass

此方法在Scores類中,該類設置了類別變量scores,但是分數是其子類的組合,例如, scores = sub scores1 + sub scores2 ,sub1 / sub2由Scores的子類計算。

public void setScores (double scores) {
    this.scores = scores;
}

public void calculateScore(double sub1, double sub2) {
    this.scores = (sub1 + sub2) /2;
}

是否有方法/設計技能/慣例來限制類不能更改分數值(即運行setScores),僅在calculateScore()運行之后。

擺脫這兩種方法,並實現final double getScores(double sub1, double sub2)進行計算,並返回所需的結果。

您可以使用calculated的標志,如果它為true,則在setScores(...)引發異常。 請注意,這種方法只會在運行時強制執行該約束,並且您可能會錯過在測試中引發異常的情況。

通常,在編譯時強制執行約束是有利的,但是我們需要更多信息。 這是一個基於您其他約束條件的猜測的想法:

如果只想一次調用setScores(...) ,也可以將分數傳遞給構造函數。 在這種情況下,您要么完全擺脫了setScores(...)要么進行保護以僅允許此類,子類和同一包中的類來調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM