多态
1.1多态的前提
1.有继承 / 实现关系 2.有方法重写 3.有父类引用指向子类对象
2.2成员访问的特点
2.2.1成员变量
编译的时候看父类,执行的时候也看父类
1.2.2成员方法
编译看父类,执行看子类
父类中可能有抽象方法没有方法体,所以统一执行子类的方法
1.2.3静态成员、静态方法
编译看父类,执行看子类
在编译的时候即使是用的子类去调用也会因为编译器的编译将子类转化为父类
1.3多态的好处和弊端
1.3.1好处
提高了代码的扩展性
具体体现 :
-
将方法的形参定义为父类类型, 这个方法就可以接收任意子类对象了
-
业务体现 :
A: 支付接口 -> 1. 支付平台 2. 银行卡支付 3 信用卡支付
B: 订单业务接口 -> 国内业务实现类 国外业务实现类
1.3.2弊端
不能直接调用子类特有的变量和方法
问题: 非要调用怎么办 ?
-
直接创建子类对象
-
向下转型
1.4多态的含义
1.4.1对象多态
将方法的形参定义为父类类型, 这个方法可以接收该父类的任意子类对象
1.4.2行为多态
同一个行为, 具有多个不同表现形式或形态的能力
1.5多态的转型问题
1.5.1向上转型
从子到父(父类引用指向子类对象)
Fu f = new Zi();
1.5.2向下转型
从子到父(父类引用指向子类对象)
Zi z = (Zi)f;
1.5.3关键字instanceof
对象名 instanceof 类型
判断一个对象是否是一个类的实例
通俗的理解:判断关键字左边的对象,是否是右边的类型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)