多态
多态
多态的基本介绍
方法或对象具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承基础之上的
多态的具体体现
- 方法的多态:重写和重载就体现了多态
- 对象的多态(核心)
- 重要的几句话:
- 一个对象的编译类型和运行类型可以不一样
- 编译类型在定义对象的时候就固定了,不能改变
- 运行类型是可以改变的
- 编译类型看定义时候“=”左边的,运行类型看“=”右边的
- 向上转型
- 可以调用父类的所有成员(但是需要遵守访问的权限)
- 但不能调用子类的特有的成员
- 在编译过程中,能调用那些成员看编译类型
- 运行时,能调用那些,看运行类型,查找方法与方法调用的规则一样
- 向下转型
- 语法:子类类型 引用名=(子类类型)父类引用
- 只能强转父类引用,不能强转对象
- 向下转型后,可以调用子类的所有成员了
- 要求父类引用必须指向当前目标类型的对象
多态的注意事项和细节
- 属性没有重写之所,属性的值看的是编译类型
- instanceOf比较操作符,用于判断对象的运行类型是否为xx类型或 xx类型的子类型
3.调用属性看编译类型,调用方法看运行类型
java的动态绑定机制
- 当调用对象方法的时候,该方法会和对象的内存地址/运行地址绑定
- 当调用对象属性时,没有动态绑定机制,那里声明哪里用
多态的应用
- 多态数组
数组的定义类型为父类,里面保存的实际元素类型为子类

浙公网安备 33010602011771号