2013-02-11 24 views
1

我有一個java任務。它的要求表明有一個稱爲Module的超類型。它有兩個子類型的「必修模塊」和「選修模塊」。前者繼承超類的所有屬性;後者有一個額外的屬性稱爲部門名稱。我是否應該定義一個與超類型完全相同的子類型

我認爲強制模塊與模塊相同。定義一個與超類相同的子類是正確的。每個模塊實例必須是強制性的或選修性的。沒有其他類型的模塊。我是否應該將Module定義爲抽象類,因爲我不想在決定在真實情況下使用哪個類時混淆。或者有人可以給我一些線索。

+0

模塊是超級類型。強制模塊擴展了Module,但沒有定義自己的方法。選修模塊擴展了模塊,它也有一個與之相關的特定方法。無需將模塊定義爲抽象類。相應地定義模塊並按要求擴展子類 – WeloSefer 2013-02-11 08:45:59

回答

0

您應該問的問題是:是否是選修模塊是必修單元? 如果是這種情況,那麼可以讓選修模塊成爲必修模塊的超類。

多態性在Java中被翻譯成關係「是」

(在你的任務很清楚,模塊類應該是抽象的,因爲它具有相同的「行爲」作爲選修課模塊類。)

+0

我的意思是選修模塊和必修模塊是相同的級別。我徘徊,超級類(模塊)應該是抽象類或不是因爲模塊是相同的必修單元。 – vuquanghoang 2013-02-11 08:51:59

+0

比你應該問的問題:「有沒有通用模塊?」。可能不會,因爲像你說的那樣,選修模塊與模塊具有相同的「行爲」。 所以我會讓它變得抽象。 – 2013-02-11 08:57:43

0

看起來像你有你的問題的答案。看起來你需要有3個類,即使CompulsoryModule沒有附加屬性,只能擴展Module。

模塊本身可以是抽象的或不抽象的。這取決於你想要達到的目標。在某些情況下,將超類Module定義爲非抽象類是不可能的。例如,如果Module有一個方法,除非您使用CompulsoryModule或ElectiveModule,否則您不知道如何實現,那麼您必須將該方法定義爲抽象,從而使整個類變爲抽象。

此外,使類抽象可以防止任何人創建該類的實例,並且只能實例化子類。同樣,當模塊本身沒有完全定義某些特定的東西,並且需要一個特定的子類來理解超類的代碼時,就需要這樣做。

相關問題