A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊猫宝宝 中级黑马   /  2015-5-6 21:34  /  3408 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

实现多态的条件,第一个:有继承关系。第二个:有方法重写。第三点:有父类引用指向子类对象

第三个,父类引用指向子类对象,怎么理解?

8 个回复

倒序浏览
咱们学的差不多,话说我来抢个沙发
回复 使用道具 举报
Fu fu =new Zi();
回复 使用道具 举报
打个比方: Animal  a = new  Cat(); 猫与动物就是子父类关系,左边是父类的引用,右边是子类的对象。编译的时候是看左边父类,运行的时候看右边子类:比如说调用吃这个方法,动物都会那么编译通过,但运行的时候,是运行猫的吃的动作;再比如:调用抓老鼠方法,动物就不一定了,这个是猫的特有,编译不通过。
回复 使用道具 举报
第三个问题就是对象的上转型,即父类声明的对象用他的子类来初始化。例如:
class A{
public void show()
          {}
}
class B extends A{
public void show()
          {
            .............
          }
}
public static void main(String [] args){
   A a=new B();
}
回复 使用道具 举报
Fu f = new Zi();  就是父类的引用指向子类对象啊。你可以学习一下引用变量在内存中的加载方式就明白了。因为new一个对象在内存中的过程就是先在堆内存中开辟一个内存空间。然后在栈内存中也开辟一个空间,存入一个变量,这个变量记录堆内存的地址。父类引用指向子类对象就是父类的这个变量记录的是一个子类对象的地址值。
回复 使用道具 举报
这个要有多子类和多继承关系的
回复 使用道具 举报
赞一个!
回复 使用道具 举报
父类的类名引用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马