第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

請哪位高手來幫我詳細(xì)講解一下視頻里的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、進(jìn)行比較的后者是Dog?dog,為什么要用Object?obj呢?
??2、第六行if(getClass()!=obj.getClass())第一個(gè)getClass()前面不用加this嗎?
??3、由getClass()確定為相同類型后,obj轉(zhuǎn)換成Dog類,代碼:Dog?other=(Dog)?obj;還需要用other來代替obj嗎?那么創(chuàng)建Dog?other對象的代碼隱藏在哪里了呢?
??4、第九行if(age!=other.age)前面一個(gè)age不用加this或者dog嗎?
??感謝解答!


正在回答

2 回答

剛看完教程 ?以下內(nèi)容僅代表個(gè)人觀點(diǎn),不保證正確

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

問題2 ?感覺和問題4是一個(gè)問題,this指針用于指向該類,之前的課程中有講過,當(dāng)發(fā)生屬性名和構(gòu)造函數(shù)的參數(shù)名重名時(shí),使用“this.屬性名=參數(shù)名”的方法進(jìn)行初始化,這里this可以區(qū)別局部作用域的參數(shù)名。也就是說沒有重名現(xiàn)象,寫this是多余的

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


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

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

_Jack_Han_ 提問者

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

_Jack_Han_ 提問者

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

迷之蔥二 回復(fù) _Jack_Han_ 提問者

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

丨陽光灬刺眼丿 回復(fù) _Jack_Han_ 提問者

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

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

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 回復(fù) 有任何疑惑可以回復(fù)我~
#1

_Jack_Han_ 提問者

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

_Jack_Han_ 提問者

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

舉報(bào)

0/150
提交
取消

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

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號