2015-08-14 79 views
0

延長我有2類叫它CustomerStuffCustomer有屬性(ID,姓名,以及getter和setter地址)和Stuff類有(ID,姓名,股票與getter和setter一起)。基於這些class屬性,CustomerStuff類有2個類似的屬性和方法(Id,name,getId(),getName()和setId(parameter),setName(parameter))。所以我創建了一個抽象類作爲包含(Id,Name,getter和setter)的基類,只是叫它myBaseClass,所以我只需要擴展myBaseClass到我的CustomerStuff類而不是寫(Id,Name,getter和setter)屬性在每個類中。沒有關係

我在想我創造的東西沒有問題,直到我的朋友告訴我我的課程不應該使用繼承,只需在每個Customer和Stuff類中編寫attribute and method(Id,Name),因爲Customer和Stuff類與Animal沒有關係和老虎,因爲虎是一種動物。

我還應該在每個Customer和Stuff類中使用繼承還是隻輸入更多的(Id, name,getter and setter)

+0

您是否正在使用繼承*只是*以避免必須指定兩個類中的兩個屬性?你會想要在同一個環境中使用'Customer'和'Stuff'嗎? –

+1

這歸結爲意見的問題,因此可能不適合SO。 (如果你保留了基類 - 我沒有給出意見 - 我會給它一個更好的名字,比如'ThingWithIdAndName'。) –

回答

0

你的朋友是對的,兩個類之間沒有關聯,所以創建一個抽象類,它們都延伸不應該完成。但我不同意你應該創建一個單獨的屬性類,因爲屬性類不會有任何特殊的方法,並且只會有方法返回並設置值。據我所知,這兩類課程之間沒有任何關聯,所以我認爲這只是過分的,你應該保留它。

2

對此,沒有「正確的」答案。

繼承可能很脆弱,在面向對象的世界中,您應該傾向於繼承。我會同意你的朋友,這兩個類是獨立的,不應該共享一個繼承層次結構。

但是,如果您希望在某些時候以相似的方式對待它們,那麼可以在需要時實現可重用的接口。

但是在這種情況下 - 除非有商業需求,否則我不會將這些類連接在一起。

0
  1. 如果實際需要類名爲Person,例如Person(id,name),那麼你可以使用它。
  2. 如果你不會有這樣的情況,那麼這些類彼此之間沒有任何關係,應該分開。我認爲大多數IDE支持按指定字段生成代碼。更強大的例子是街道(id,名字),人(id,名字)。