Java的多态

时间:2020-07-01 09:31:14   收藏:0   阅读:63

多态原理

什么是多态

编译时多态->方法重载

运行时识别对象和类的类型信息方法:

  1. 反射
  2. RTTI(Run-Time Type Identification,运行时类型判定)

RTTI: 在编译时获取对象的类型信息.

多态:

多态的用法

两种实现方式

  1. 子类继承父类(extends)
  2. 类实现接口(implements)

核心:声明是父类类型或接口类型,创建的是实际类型.

示例:

List list = new ArrayList(); // 声明是父类List,创建的是子类ArrayList.

public void test(List list); // 方法参数使用父类或接口.

优点:

多态的实现原理与RTTI

功能:
使用父类的指针或引用来检查指针或引用所指向的对象的实际派生类型.

实现:
通过Class类文件的方法表实现.

Class类:"类的类".

示例:

class father{}; // 父类

class son extends father{}; // 子类

father p = new son(); // 父类引用指向子类
Class c = p.getClass(); // c为子类son类型

通过JVM了解多态实现原理

多态的机制:

  1. 调用方法.(需要完成方法的符号引用解析) ==> 符号引用被解析为方法表的偏移量.
  2. JVM通过对象引用 ==> 方法区中的类型信息入口 ==> 查询类的方法表 ==> 指向子类改写的方法

小结:

技术图片
技术图片

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!