java多态原理及内存分析

 时间:2024-10-31 03:29:12

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

2、首先要有继承。

java多态原理及内存分析

3、为了实现多态三个条件第一个继承已经有了。第二个就是重写方法。我们定义的原来的方法是:public 即枢潋雳void yell() { System.out.println("一般的叫声"); }重写过之后的是:public void yell() { System.out.println("狗的叫声"); }

java多态原理及内存分析

4、然后我们建立一个test类。写个测试方法测试动物叫声。”

java多态原理及内存分析

5、编译时类型由声明时类型决定 这里声明一个“animal”, “c”是animal类型,编译器只认这个“animal” 然后找到“yell”方法。而运行类型时有实际类型值决定。

6、这里“Animal dog = new Dog();”就用到了“父类引用指向子类”。“dog”继承了“Animal”拥有“animal”的属相和方法。

java多态原理及内存分析

7、然后根据内存图来分析。首先“栈”里有我们的“dog”“堆”里面有我们的加载的代码之类的东西。这些之前都有过介绍,不会的可以去看下我之前写过的或者百度搜索下。

java多态原理及内存分析

8、因为有继承关系,所以“dog”的“super”属性指向它继承的“animal”,而“object”是所有的父类,所以“animal”的“super”指向“object”。(每个构造器里面都含有隐式的“this”,“super”,其中“this”指向本地)。

9、然后调用“test”测试类。输出语句。

java多态原理及内存分析

10、这样就完成了一个简单的多态例子。当然也可以添加其他的方法来使程序更加丰富。

  • 如何用ES6新增方法将对象的属性和方法转成数组
  • 4412开发板ubuntu播放音乐没有声音解决方法
  • Win10系统禁止键盘鼠标唤醒电脑的方法?
  • 如何搭建RoboCup2D仿真足球机器人平台?
  • 在eclipse上写代码的同时控制台报错
  • 热门搜索
    手抄报古诗 鲁迅的手抄报 关于奥运会的手抄报 环保手抄报内容50字 做文明人手抄报 手抄报板块 以读书为主题的手抄报 我爱文学手抄报图片 手抄报边框设计 做美德少年手抄报