首页 > 电脑专区 > 电脑硬件 >

java多态原理及内存分析

来源:互联网 2023-03-03 10:55:36 261

Java有三大特性分别是“封装”,“继承”,“多态”。我们学习过java都知道“继承”和“封装”相对于比较好理解,多写几个例子就能够明白了,那么什么是多态呢? 用现实生活中的例子来说就是:“说的一套,做的一套”。用术语是指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。Rqh办公区 - 实用经验教程分享!

工具/原料

  • 电脑
  • 构造器的基础

方法/步骤

  • 1

    单说概念的其实很难理解,我们结合程序来就比较好理解了。要实现多态就一定要满足三个条件。首先要有继承,其次是方法的重写,最后是父类引用只想子类对象。这里我举一个最常用的事例“animal”类。把“animal”作为什么“狗”,“猫” “老虎”......的父类,因为它们都是动物。并且这里定义父类里面的方法为“叫”,因为所有的动物基本上都会叫(天生有问题的除外)。Rqh办公区 - 实用经验教程分享!

  • 2

    首先要有继承。Rqh办公区 - 实用经验教程分享!

    java多态原理及内存分析Rqh办公区 - 实用经验教程分享!

  • 3

    为了实现多态三个条件第一个继承已经有了。第二个就是重写方法。Rqh办公区 - 实用经验教程分享!

    我们定义的原来的方法是:Rqh办公区 - 实用经验教程分享!

    public void yell() {Rqh办公区 - 实用经验教程分享!

    System.out.println("一般的叫声");Rqh办公区 - 实用经验教程分享!

    }Rqh办公区 - 实用经验教程分享!

    重写过之后的是:Rqh办公区 - 实用经验教程分享!

    public void yell() {Rqh办公区 - 实用经验教程分享!

    System.out.println("狗的叫声");Rqh办公区 - 实用经验教程分享!

    } Rqh办公区 - 实用经验教程分享!

    java多态原理及内存分析Rqh办公区 - 实用经验教程分享!

  • 4

    然后我们建立一个test类。写个测试方法测试动物叫声。”Rqh办公区 - 实用经验教程分享!

    java多态原理及内存分析Rqh办公区 - 实用经验教程分享!

  • 5

    编译时类型由声明时类型决定 这里声明一个“animal”, “c”是animal类型,编译器只认这个“animal” 然后找到“yell”方法。而运行类型时有实际类型值决定。Rqh办公区 - 实用经验教程分享!

  • 6

    这里“Animal dog = new Dog();”就用到了“父类引用指向子类”。“dog”继承了“Animal”拥有“animal”的属相和方法。Rqh办公区 - 实用经验教程分享!

    java多态原理及内存分析Rqh办公区 - 实用经验教程分享!

  • 6此文章非法爬取自百度经验
  • 7

    然后根据内存图来分析。首先“栈”里有我们的“dog”“堆”里面有我们的加载的代码之类的东西。这些之前都有过介绍,不会的可以去看下我之前写过的或者百度搜索下。Rqh办公区 - 实用经验教程分享!

    java多态原理及内存分析Rqh办公区 - 实用经验教程分享!

  • 8

    因为有继承关系,所以“dog”的“super”属性指向它继承的“animal”,而“object”是所有的父类,所以“animal”的“super”指向“object”。(每个构造器里面都含有隐式的“this”,“super”,其中“this”指向本地)。Rqh办公区 - 实用经验教程分享!

  • 9

    然后调用“test”测试类。输出语句。Rqh办公区 - 实用经验教程分享!

    java多态原理及内存分析Rqh办公区 - 实用经验教程分享!

  • 10

    这样就完成了一个简单的多态例子。当然也可以添加其他的方法来使程序更加丰富。Rqh办公区 - 实用经验教程分享!

  • 注意事项

    • 注意基本的三项
    • 了解构造器

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Rqh办公区 - 实用经验教程分享!


    标签: JAVA内存

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码