關于重寫compareTo()方法的疑問
我給Student對象創建的id屬性都是private的,但我試過以后發現,這里為什么o.id才會返回正常結果呀?o是Student對象,不應該調用o.getId()才會返回正常比較結果嘛?
像這種重寫的方法內部調用了該方法(這里重寫compareTo()方法在53行調用了compareTo()方法),是默認調用重寫前的方法嗎?
我給Student對象創建的id屬性都是private的,但我試過以后發現,這里為什么o.id才會返回正常結果呀?o是Student對象,不應該調用o.getId()才會返回正常比較結果嘛?
像這種重寫的方法內部調用了該方法(這里重寫compareTo()方法在53行調用了compareTo()方法),是默認調用重寫前的方法嗎?
2020-03-24
舉報
2020-03-25
重發下:翻了下以前的問答有這個重寫的:第三行的comparaTo是原始沒有被重寫的(事實上到這里為止comparaTo沒有被重寫完成,所以使用的也不可能是重寫的),這里之所以可以直接用,因為比較的兩者是基本類型,this.id.compareTo(arg0.id,都是字符型。兩個string做簡單比較是不存在歧義不需要重寫就可以實現的,只有當比較對象是Student這種復雜的,里面包含多個屬性的類對象,原始的comparaTo才無法比較,需要重寫。
一個是比較學生對象,一個是比較id
2020-12-24
其實講的這個重寫的Compare方法有些過于簡單了,可以嘗試下用Student.name的長度進行判斷,這樣大家更能理解。
2020-04-19
53行的comparaTo 是id這個屬性的comparaTo方法,是String類自帶的,和當前類中重寫的comparaTo方法無關。屬于兩個不同類的兩個同名方法。
2020-03-25
private在本類中是可以直接調用的