美文网首页
java对象转型和多态

java对象转型和多态

作者: 0843d07b95d5 | 来源:发表于2018-02-12 12:02 被阅读0次

    本文为学习笔记 能力有限 如有错误望指正。谢谢!!!

    对象转型:

    一个基类的引用可以指向其子类的对象,基类的引用不能访问其子类新添加的成员;

    一个子类的对象可以当作基类的对象来使用称作向上转型,反之称作向下转型;

    instanceof 用来判断该引用型变量所“指向”的对象是否属于该类或者该类的子类。

    对象转型

    对象转型的便利之处:对象转型中父类引用可以指向子类对象。

    对象转型

    f函数的目的就是输出猫狗对象的名字和其他属性,没有对象转型我们可以为猫和狗各写一个f函数。可是有了对象转型之后我们可以将f函数的参数类型设置为猫和狗类的基类,这个时候f函数既可以传进来猫的引用也可以传进类狗的引用,可扩展性比较强。这个时候可扩展性达到最好了嘛?还没有,接下来介绍多态!

    多态:

    多态的三个必要条件:1继承;2重写;3 父类对象指向子类对象

    多态 运行结果

    在内存中的解释:

    1.在栈中定义一个Cat类型的引用 c , c 指向在堆内存中new出来的Cat对象(该对象已经重写了scream 函数);

    2.在栈中定义一个Lady类型的引用 l ,l 指向在堆内存中new出来的Lady对象;并将引用 c 的值赋给Lady对象的Animal类型的pet成员变量(多态)

    3.l.enjoy()调用pet指向的堆内存中Cat对象的重写的scream函数(动态绑定)。

    这个解释可能比较抽象献上下图参考,建议自己画图更清楚。

    内存图

    这个图是不准确的没有画出存放代码的codesegment,理解意思就好,语言功底有限。谅解!

     

    相关文章

      网友评论

          本文标题:java对象转型和多态

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