对象的多态 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作 1.一个对象的编译类型和运行类型可以不一致 Animal animal = new Dog(); animal的编译类型是animal,运行类型是Dog 2.编译类型在定义对象时,就确定了,不能改变 3.运行类型是可以变化的 4.编译类型看定义时 = 号的左边,运行类型看 = 号的右边 多态的前提是两个对象(类)存在继承关系 多态的向上转型 (1)本质:父类的引用指向了子类的对象 (2)语法:父类类型 引用名 = new 子类类型(); Animal animal = new cat; (3)特点:编译类型看左边,运行类型看右边 可以调用父类中所有成员(需遵守访问权限) !!!不能调用子类中特有的成员 最终运行效果看子类的具体实现 !!!!当父类引用示例指向子类对象(向上转型)时,示例只能够调用父类方法;但是如果 子类重写了父类的方法,示例就默认调用子类重写后的方法 多态的向下转型 (1)语法:子类类型 引用名 = (子类类型) 父类引用; Cat cat = Cat(animal) (2)只能强转父类的引用,不能强转 父类的对象 (3)要求父类的引用必须指向的是当前目标类型的对象 (4)可以调用子类类型中所有的成员 属性重写问题 属性没有重写之说 属性看编译类型 方法看运行类型 instanceOf比较操作符,用于判断对象的运行类型是否为Xx类型或为Xx类型的子类型 java动态绑定机制 当调用对象方法的时候,该方法会和该对象的内存地址\运行类型绑定 当调用对象属性时,没有动态绑定机制,哪里声明,哪里是用
多态知识点
最新推荐文章于 2022-10-28 19:00:41 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)