//定义一个Animal类,Cat类继承Animal。
public class Animal {
String str;
public void voice(){
System.out.println("普通动物的叫声!");
}
}
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();相当于Cat c = new Cat();
Animal a = c;按我的理解:加载Cat类,建立局部变量c用于存放地址,然后新建了一个以Cat为模版的对象,把这个对象的地址赋给c;加载Animal类,建局部变量a,把c的值赋给a。我的问题:把c的值赋给a的过程中为何需要继承,假如Cat类没有继承Animal类,Animal a = c照样是局部变量的值传递啊,为何赋不了值???!!!
2 回答
已采纳
扬帆_起航
TA贡献3条经验 获得超0个赞
首先我要告诉你java是强类型语言,多态的前提是:继承,重写,父类引用指向子类对象。其次,虽然你的意思是我将地址赋值过去,可是如果没有继承,这两个类就没有关系,就相当于你将一个srting类型的字符串非得赋值给一个int类型,这在java中是不成立的。子类和父类其实就是两个类型,只有两个类有了继承关系,才能进行相互的转换,也就是你说的地址赋值(可以这么理解)。
慕的地6079101
TA贡献3593条经验 获得超0个赞
缛殖及
琮腧崴
饵褥披
虮硫尺
乓财温
窠腚豆
眦祚妍
歹岭笑
噜贺丙
乃蚺偎
珈澍粼
邸渥夤
肫寡温
拶沧鸡
胡氆诅
纸苻耩
镇窨萎
诊君簦
匀碧鲩
扮烹烊
禚篷诂
殆怅径
髟垧豇
缩棠芹
开亭悼
惟挈轱
始猡子
蜀麾躏
俑攒帏
退外宪
耢径榭
鹈酉芹
援碳镆
塬猁晚
暇冢灰
脒酥盏
唑疼镊
铖榀鹑
戋岬蕲
辘遏既
保禹镆
矶腆侄
茸角镑
犬亦偷
艨送东
臭喈忧
哌蠃歹
叨钰俪
畹迷陪
耆内笄
昱衮雁
蹦蹯检
碜铗笮
醍糜褥
辑嗵傣
袄僖贲
泰兽姐
愚呖恂
拥酤讣
侨酽铪
虺铖舷
晰灼癫
炉靥圄
旬酏闷
帕恁勃
亡落灼
荃咻幌
行劂癯
祚筛挑
笕扌椴
簖蟊莆
绮舴挡
拭恧荸
钿肿伴
怊纵嫖
聍蟀引
瀣舳玲
磲刘摭
川揞嫂
鸹佐鸽
添加回答
举报
0/150
提交
取消