美文网首页
JAVA7:面向对象-多态及转型问题

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

作者: DuTel | 来源:发表于2018-12-27 13:00 被阅读0次

关于面向对象中的多态:

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

多态中成员访问的特点:

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

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

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

下面是重点:

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

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

就是这样,喵~

相关文章

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

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

  • Java基础面向对象三大特性之一多态(Polymorphism)

    文章目录 面向对象三大特性之一多态(Polymorphism) 二、向下转型,向上转型 面向对象三大特性之一多态(...

  • 对象的转型(向上转型和向下转型)

    转型是面向对象多态性的体现。 向上转型——将子类的对象赋值给父类的引用。 Student s=new Studen...

  • Java面向对象编程——封装和继承

    面向对象是编程的重点,涉及到类的封装、继承、抽象、多态及接口的设计等。其中,封装、继承、多态是面向对象的三大特征。...

  • Class 的封装及调用-Python教学【StudyQuant

    前言:面向对象的三大特性是指:封装、继承和多态。论Class 的封装及调用 面向对象三大特性 面向对象的三大特性是...

  • 面向对象:封装和继承、多态

    面向对象解决的问题 并不是:封装、继承、多态 而是写代码的套路问题(定势思维) 面向对象的继承,用 extend ...

  • RTTI

    多态及可能存在的问题 多态是C++面向对象的三大特性之一,具体表现为: 即可以用父类的指针指向子类的对象。然而这也...

  • Java面向对象-多态性

    一、多态性 多态性的体现: 对象的多态性: 向上转型:程序会自动完成父类 父类对象 = 子类实例 向下转型:强...

  • js的面向对象

    面向对象:面向对象特点:抽象:抓住核心问题封装:只能通过对象来访问方法继承:从已有对象上继承出新的对象多态:多对象...

  • Java学习笔记 (一)

    多态性 方法的重载与覆写 对象的多态性①.向上转型:子类对象→父类对象 (自动完成)②.向下转型:父类对象→子类对...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/zesrlqtx.html