多态
1、多态概述
多态是面向对象的三大特性之一。它描述的是一种事物的多种形态,例如一名同学既是学生,又是人,此时学生就有两种形态。
多态体现在父类引用变量指向子类对象。
多态的前提是一个类必须有父类或实现了接口,否则无法完成多态。
在使用多态的父类引用变量调用方法时,会调用子类重写后的方法。
2、多态的定义与使用格式
定义格式:
父类类型 变量名 = new 子类类型();
变量名.方法名;
同一个父类的方法被多个子类重写时,在调用方法时,会调用父类引用变量指向的子类中被重写的方法。
3、多态中成员的特点
成员变量
- 编译时期:参考的是引用变量所属的类中是否有被调用的成员变量。没有,编译失败。
- 运行时期:调用引用变量所属的类中被调用的成员变量。
- 口诀:编译运行看左边。
成员方法
- 编译时期:参考引用变量所属的类,如果类中没有被调用的方法,编译失败。
- 运行时期:参考引用变量所指向对象所属的类,运行对象所属类中的方法。
- 口诀:编译看左边,运行看右边。
4、instanceof关键字
instanceof关键字用于判断某个对象是否属于某个类型。
5、多态转型
多态转型分为向上转型合向下转型。
- 向上转型:子类对象赋给一个父类引用变量,最典型的向上转型是多态。
- 向下转型:一个已经向上转型的子类对象,可以通过强制类型转换,将指向子类对象的父类引用转为子类引用。
6、多态的好处与弊端
- 好处:多态的向上转型隐藏了子类类型,提高了代码的扩展性
- 弊端:向下转型需要判断子类类型,否则容易引发类型转换异常
7、多态举例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现