//定義一個(gè)Animal類,Cat類繼承Animal。
public?class?Animal?{
String?str;
public?void?voice(){
System.out.println("普通動(dòng)物的叫聲!");
}
}
class?Cat?extends?Animal{
public?void?voice(){
System.out.println("喵喵喵");
}
public?void?catchMouse(){
System.out.println("抓老鼠");
}
}public?class?Test?{
public?static?void?testAnimalVoice(Animal?a){
a.voice();
}
public?static?void?main(String[]?args){
Animal?a?=?new?Cat();
testAnimalVoice(a);
}
}Animal?a?=?new?Cat();相當(dāng)于Cat?c?=?new?Cat();?
Animal?a?=?c;按我的理解:加載Cat類,建立局部變量c用于存放地址,然后新建了一個(gè)以Cat為模版的對(duì)象,把這個(gè)對(duì)象的地址賦給c;加載Animal類,建局部變量a,把c的值賦給a。我的問(wèn)題:把c的值賦給a的過(guò)程中為何需要繼承,假如Cat類沒(méi)有繼承Animal類,Animal a = c照樣是局部變量的值傳遞啊,為何賦不了值???!?。?
2 回答
已采納
揚(yáng)帆_起航
TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超0個(gè)贊
首先我要告訴你java是強(qiáng)類型語(yǔ)言,多態(tài)的前提是:繼承,重寫,父類引用指向子類對(duì)象。其次,雖然你的意思是我將地址賦值過(guò)去,可是如果沒(méi)有繼承,這兩個(gè)類就沒(méi)有關(guān)系,就相當(dāng)于你將一個(gè)srting類型的字符串非得賦值給一個(gè)int類型,這在java中是不成立的。子類和父類其實(shí)就是兩個(gè)類型,只有兩個(gè)類有了繼承關(guān)系,才能進(jìn)行相互的轉(zhuǎn)換,也就是你說(shuō)的地址賦值(可以這么理解)。
慕的地6079101
TA貢獻(xiàn)3593條經(jīng)驗(yàn) 獲得超1個(gè)贊
縟殖及
琮腧崴
餌褥披
蟣硫尺
乓財(cái)溫
窠腚豆
眥祚妍
歹嶺笑
嚕賀丙
乃蚺偎
珈澍粼
邸渥夤
肫寡溫
拶滄雞
胡氆詛
紙苻耩
鎮(zhèn)窨萎
診君簦
勻碧鯇
扮烹烊
禚篷詁
殆悵徑
髟坰豇
縮棠芹
開亭悼
惟挈轱
始玀子
蜀麾躪
俑攢幃
退外憲
耢徑榭
鵜酉芹
援碳鏌
塬猁晚
暇?;?/a>
脒酥盞
唑疼鑷
鋮榀鶉
戔岬蘄
轆遏既
保禹鏌
磯腆侄
茸角鎊
犬亦偷
艨送東
臭喈憂
哌蠃歹
叨鈺儷
畹迷陪
耆內(nèi)笄
昱袞雁
蹦蹯檢
磣鋏笮
醍糜褥
輯嗵傣
襖僖賁
泰獸姐
愚嚦恂
擁酤訃
僑釅鉿
虺鋮舷
晰灼癲
爐靨圄
旬酏悶
帕恁勃
亡落灼
荃咻幌
行劂癯
祚篩挑
筧扌椴
籪蟊莆
綺舴擋
拭恧荸
鈿腫伴
怊縱嫖
聹蟀引
瀣舳玲
磲劉摭
川揞嫂
鴰佐鴿
添加回答
舉報(bào)
0/150
提交
取消
