JAVA7:面向对象-多态及转型问题

关于面向对象中的多态:
多态存在的前提:
1 存在类之间的继承关系;
2 在子类中的成员方法存在重写;
3 父类引用指向子类对象;


多态中成员访问的特点:
1 成员变量
(编译看左边,运行看左边————>变量无法重写,不能覆盖)
2 成员函数
(编译看左边,运行看右边————>方法重写)
3 构造函数
(创建子类方法时,访问父类的构造方法【super()】,初始化父类数据)
4 静态函数
(编译看左边,运行看左边)


然而,子类作为父类的拓展,有可能存在新的成员方法,但根据以上别的访问特性,无法使用父类的引用来调用新方法。为了解决这个问题,设计了“向上转型-向下转型”这样的操作。




{向上转型:
就像上面的将父类引用指向子类对象(增强了java程序的拓展性)}


下面是重点:
想要调用子类中的新方法必须要用子类的对象,然而新建一个子类对象是不合理的(容易引起混乱),而且浪费内存(虽然内存很大),使软件变得冗杂(多余代码)。
可不可以就使用原“对象”进行调用?就像对基本数据类型数据的强制转换,将父类引用赋值给子类引用,建立子类引用到子类对象的联系?
这就是向下转型


向下转型:
向下转型不是绝对成功的:会跑的不一定就是动物,还有可能是汽车,两者显然不属于同一类事物。所以要想向下转型成功, 必须确保父类引用所指向的子类对象能够和子类的引用匹配起来。(听上去有点像“还原”)
为了确保这一点,在成功的向下转型之前一定会有向上转型:
{ Father f = new son();
Son s = (Son)f; }


就是这样,喵~


(感谢传智刘老师的精彩讲解让我终于明白了这个问题)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值