34-多态

多态的具体体现

1.方法的多态,重写和重载就体现多态

2.对象的多态 (核心,困难,重点)

编译时aninal是Aniaml,运行是animal是Dog
(1)一个对象的编译类型和运行类型可以不一致
(2)编译类型在定义对象时,就确定了,不能改变
(3)运行类型是可以变化的.
(4)编译类型看定义时=号的左边,运行类型看=号的右边
案例:
Animat animal = new Dog(); (animal 编译类型是Animal,运行类型Dog)
animal = new Cat(); (animal 的运行类型变成了Cat,编译类型仍然是Animal)

调用方法时,会首选运行类型的。属性会首选编译类型的。

多态的应用:

多态数组:数组的定义类型为父类类型,里面保存的实际元素类型为子类类型

多态参数:方法定义的形参类型为父类类型,实参类型允许为子类类型

多态简介

1)本质:父类的引用指向了子类的对象
2)语法:父类类型 引用名= new子类类型();
3)特点:编译类型看左边,运行类型看右边。
可以调用父类中的所有成员(需遵守访问权限),
不能调用子类中特有成员;
最终运行效果看子类的具体实现!

多态注意事项:

1.多态是方法的多态,属性没有多态

2.父类和子类,有联系

3.多态存在条件:

​ 有继承关系

​ 方法需要重写

​ 父类引用指向子类对象 Father f1 = new Son();

instanceof

instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例

System.out.println(x instanceof Y); 

instanceof结果为true可进行类型转换

  • 把子类转换为父类,向上转型
  • 把父类转换为子类,向下转型:强制转换
  • 方便方法调用,减少重复的代码

java的动态绑定机制

1.当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2.当调用对象属性时,没有动态绑定机制,哪里声明,那里使用

posted @ 2023-02-08 15:22  佩德罗帕斯卡  阅读(113)  评论(0)    收藏  举报