为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

诡圣 2016-12-28 15:05:30
//定义一个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中是不成立的。子类和父类其实就是两个类型,只有两个类有了继承关系,才能进行相互的转换,也就是你说的地址赋值(可以这么理解)。
查看完整回答
反对 回复 2016-12-28
?
蜂之谷

TA贡献564条经验 获得超863个赞

多态的条件:

1.继承

2.重写

3.父类引用指向子类对象(向上转型)

查看完整回答
反对 回复 2016-12-28
  • 2 回答
  • 0 关注
  • 2164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信