為什麼使用繼承

2021-08-22 10:46:31 字數 883 閱讀 9637

示例:學生類(名稱,年齡)。在沒有封裝對name和age的訪問時所帶來的問題。

packagebu18;

publicclasstest2 }

classstudent

輸出:年齡小於零,不合乎邏輯。但是程式執行卻是正常的,並沒有報錯。所以通過「.」直接訪問成員變數的做法是不對的。

改進(規範):

1、所有成員變數設定為private

2、所有成員變數新增getter和setter方法。通常方法都是public的。

3、 在setter中設定成員的值,而在getter方法只是作單純的顯示功能。

原則:所有的賦值語句都在set方法中,而get方法只是簡單地返回值。

classstudent

publicvoidsetage(intage)

this.

age= age; }

publicstring getname()

publicvoidsetname(string name)

} 封裝總結:

1、減少**冗餘,提高重用性

2、提供一種訪問機制,讓使用者不能直接訪問成員變數(常言道:通過公有方法來訪問私有變數)。

3、降低使用難度,使**使用更為簡單。

思考:在get方法中寫,還是在set方法中寫?

為什麼優先使用組合而不是繼承

繼承具有如下優點 實現新的類非常容易,因為基類的大部分功能都可以通過繼承關係自動賦予派生類 修改或者擴充套件繼承來的實現非常容易 只要修改父類,派生的類的行為就同時被修改了。初學物件導向程式設計的人會認為繼承真是乙個好東西,是實現復用的最好手段。但是隨著應用的深入就會發現繼承有很多缺點 繼承破壞封裝...

為什麼要繼承Serializable

最重要的兩個原因是 1 將物件的狀態儲存在儲存 中以便可以在以後重新建立出完全相同的副本 2 按值將物件從乙個應用程式域傳送至另乙個應用程式域。實現serializable介面的作用是就是可以把物件存到位元組流,然後可以恢復。所以你想如果你的物件沒實現序列化怎麼才能進行網路傳輸呢,要網路傳輸就得轉為...

為什麼要優先使用組合 而不是繼承?

繼承具有如下優點 實現新的類非常容易,因為基類的大部分功能都可以通過繼承關係自動賦予派生類 修改或者擴充套件繼承來的實現非常容易 只要修改父類,派生的類的行為就同時被修改了。初學物件導向程式設計的人會認為繼承真是乙個好東西,是實 現復用的最好手段。但是隨著應用的深入就會發現繼承有很多缺點 繼承破壞封...