2019獨角獸企業重金招聘Python工程師標準>>>
面向對象的核心思想:“找合適的對象,做適合的事情”。
合適的對象:
1. 自己描述類,自己創建對象。
2. sun已經描述了好多常用的類,可以使用這些類創建對象。
API(Application Program Interface)
sun定義的那么多類的終極父類是Object。Object描述的是所有類的通用屬性與方法。
1.1?toString方法
toString() 返回對象的描述信息 java.lang.Object@de6ced 類名@哈希碼值的十六進制形式。
直接輸入一個對象的時候,會調用對象的toString方法。
練習:自定義一個Person類,打印該對象的描述信息,要求描述信息為:姓名 — 年齡
問題:調用p的toString方法時,打印出來的信息是類名+內存地址值。不符合要求。根據我們之前學的繼承,假如父類的指定的功能不能滿足要求,那么子類可以復寫父類的功能函數。那么該對象再調用toString()方法時,則會調用子類復寫的toString方法。
編程習慣:開發者要對自定義的類重寫toString(),對對象做詳細的說明
1.1?equals方法
equals()?返回的是比較的結果 如果相等返回true,否則false,比較的是對象的內存地址值。
問題:比較兩個人是否是同一個人,根據兩個人的名字判斷。
問題:如果根據名字去作為判斷兩個人是否是同一個時,明顯p與p1是同一個人,但是程序輸入卻不是同一個人。不符合我們現實生活的要求。
解決:?根據我們學的繼承中的函數復寫,如果父類的函數不能滿足我們目前的要求,那么就可以在子類把該功能復寫,達到復合我們的要求。
編程習慣:開發者要對自定義的類重寫equals(),使得比較兩個對象的時候比較對象的屬性是否相等,而不是內存地址。
1.1?hashCode方法
hashCode()?返回該對象的哈希碼值: 采用操作系統底層實現的哈希算法。 同一個對象的哈希碼值是唯一的。
java規定如果兩個對象equals返回true,那么這兩個對象的hashCode碼必須一致。
?