多态
多态
多态的基本介绍
方法或对象具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承基础之上的
多态的具体体现
- 方法的多态:重写和重载就体现了多态
- 对象的多态(核心)
- 重要的几句话:
- 一个对象的编译类型和运行类型可以不一样
- 编译类型在定义对象的时候就固定了,不能改变
- 运行类型是可以改变的
- 编译类型看定义时候“=”左边的,运行类型看“=”右边的
- 向上转型
- 可以调用父类的所有成员(但是需要遵守访问的权限)
- 但不能调用子类的特有的成员
- 在编译过程中,能调用那些成员看编译类型
- 运行时,能调用那些,看运行类型,查找方法与方法调用的规则一样
- 向下转型
- 语法:子类类型 引用名=(子类类型)父类引用
- 只能强转父类引用,不能强转对象
- 向下转型后,可以调用子类的所有成员了
- 要求父类引用必须指向当前目标类型的对象
多态的注意事项和细节
- 属性没有重写之所,属性的值看的是编译类型
- instanceOf比较操作符,用于判断对象的运行类型是否为xx类型或 xx类型的子类型
3.调用属性看编译类型,调用方法看运行类型
java的动态绑定机制
- 当调用对象方法的时候,该方法会和对象的内存地址/运行地址绑定
- 当调用对象属性时,没有动态绑定机制,那里声明哪里用
多态的应用
- 多态数组
数组的定义类型为父类,里面保存的实际元素类型为子类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器