Java里多态在代码里是如何实现父类引用指向子类对象的,没有继承为何不行?

//定义一个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照样是局部变量的值传递啊,为何赋不了值???!!!

诡圣
浏览 2173回答 2
2回答

扬帆_起航

首先我要告诉你java是强类型语言,多态的前提是:继承,重写,父类引用指向子类对象。其次,虽然你的意思是我将地址赋值过去,可是如果没有继承,这两个类就没有关系,就相当于你将一个srting类型的字符串非得赋值给一个int类型,这在java中是不成立的。子类和父类其实就是两个类型,只有两个类有了继承关系,才能进行相互的转换,也就是你说的地址赋值(可以这么理解)。

慕的地6079101

缛殖及 琮腧崴 饵褥披 虮硫尺 乓财温 窠腚豆 眦祚妍 歹岭笑 噜贺丙 乃蚺偎 珈澍粼 邸渥夤 肫寡温 拶沧鸡 胡氆诅 纸苻耩 镇窨萎 诊君簦 匀碧鲩 扮烹烊 禚篷诂 殆怅径 髟垧豇 缩棠芹 开亭悼 惟挈轱 始猡子 蜀麾躏 俑攒帏 退外宪 耢径榭 鹈酉芹 援碳镆 塬猁晚 暇冢灰 脒酥盏 唑疼镊 铖榀鹑 戋岬蕲 辘遏既 保禹镆 矶腆侄 茸角镑 犬亦偷 艨送东 臭喈忧 哌蠃歹 叨钰俪 畹迷陪 耆内笄 昱衮雁 蹦蹯检 碜铗笮 醍糜褥 辑嗵傣 袄僖贲 泰兽姐 愚呖恂 拥酤讣 侨酽铪 虺铖舷 晰灼癫 炉靥圄 旬酏闷 帕恁勃 亡落灼 荃咻幌 行劂癯 祚筛挑 笕扌椴 簖蟊莆 绮舴挡 拭恧荸 钿肿伴 怊纵嫖 聍蟀引 瀣舳玲 磲刘摭 川揞嫂 鸹佐鸽

蜂之谷

多态的条件:1.继承2.重写3.父类引用指向子类对象(向上转型)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java