亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請哪位高手來幫我詳細講解一下視頻里的equals()方法體,謝謝。

public?boolean?equals(Object?obj){
??????if(this==obj)
???????return?ture;
??????if(obj==null)
???????return?false;
??????if(getClass()!=obj.getClass())
???????return?false;
??????Dog?other=(Dog)?obj;
??????if(age!=other.age)
???????return?false;
???????return?ture;??
??}
??這段代碼看不懂,能幫我講下嗎?謝謝。
??著重問題:
??1、進行比較的后者是Dog?dog,為什么要用Object?obj呢?
??2、第六行if(getClass()!=obj.getClass())第一個getClass()前面不用加this嗎?
??3、由getClass()確定為相同類型后,obj轉換成Dog類,代碼:Dog?other=(Dog)?obj;還需要用other來代替obj嗎?那么創建Dog?other對象的代碼隱藏在哪里了呢?
??4、第九行if(age!=other.age)前面一個age不用加this或者dog嗎?
??感謝解答!


正在回答

2 回答

剛看完教程 ?以下內容僅代表個人觀點,不保證正確

問題1 ?equals()方法是所有類的共父類Object中的方法,要重載改方法需保持參數一致,Object中equals原型的參數就是Obeject,不能特化Dog,因為這里的方法是繼承來的。

問題2 ?感覺和問題4是一個問題,this指針用于指向該類,之前的課程中有講過,當發生屬性名和構造函數的參數名重名時,使用“this.屬性名=參數名”的方法進行初始化,這里this可以區別局部作用域的參數名。也就是說沒有重名現象,寫this是多余的

問題3 ?這個貌似和多態有關,c++里如果接觸過的話會更好理解,基類指針可以指向派生類對象,舉個例子:假如父親有兩個兒子,這里父親是基類,兒子是派生類,“父親”這一名詞(不是對象名,是類名)可以代表某個兒子。


if(getClass()!=obj.getClass())只能證明obj類名和Dog類名相同,有可能涉及到多態(obj和Dog不是同一類,一個父親一個兒子;或者兩個都是兒子,老大,老二),所以要進行強制類型轉化。

0 回復 有任何疑惑可以回復我~
#1

_Jack_Han_ 提問者

非常感謝!
2016-01-18 回復 有任何疑惑可以回復我~
#2

_Jack_Han_ 提問者

Dog other=(Dog)obj; other對象在哪里聲明的呢?
2016-01-18 回復 有任何疑惑可以回復我~
#3

迷之蔥二 回復 _Jack_Han_ 提問者

這句話本身就是聲明啊
2016-01-19 回復 有任何疑惑可以回復我~
#4

丨陽光灬刺眼丿 回復 _Jack_Han_ 提問者

樓上說的沒錯 這句話本身就是聲明 格式如下: 類名 對象名=(欲強制轉換類型) 待轉換的對象 其實也可以理解為 類型 變量名;這種聲明局部變量的格式,=號后面就是在聲明的同時對其進行了初始化
2016-01-19 回復 有任何疑惑可以回復我~
查看1條回復

這段代碼改為下邊這樣也是沒問題的,這樣容易理解:

public?boolean?equals(Dog?obj)?{
		if?(this?==?obj)
			return?true;
		if?(obj?==?null)
			return?false;
		if?(this.getClass()?!=?obj.getClass())
			return?false;
		/*Dog?other?=?(Dog)?obj;
		if?(age?!=?other.age)
			return?false;
		return?true;*/
		if(age!=obj.age){
			return?false;
		}else{
			return?true;
		}
	}



0 回復 有任何疑惑可以回復我~
#1

_Jack_Han_ 提問者

非常感謝!
2016-02-21 回復 有任何疑惑可以回復我~
#2

_Jack_Han_ 提問者

非常感謝??!
2016-02-21 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請哪位高手來幫我詳細講解一下視頻里的equals()方法體,謝謝。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號