方法重写/覆盖(override)
基本介绍 :
入门 :
//com.edu.override_ 包下的 Override01.java
• 注意事项和使用细节
方法重写也叫方法覆盖,需要满足下面的条件 //Animal.java Dog.java
-
子类的方法的参数,方法名称,要和父类方法的参数,方法名称完全一样。
-
子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类 比如 父类 返回类型是 Object ,子类方法返回类型是String
public Object getInfo() , public String getInfo()
//这里由于子类的返回类型String是父类返回类型的Object的子类 ,因此也可以
//注意:如果把二者调换过来 ,子类返回Object父类返回String的话就会报错了
//这是因为不符合父类的返回类型是子类返回类型的父类 -
子类方法不能缩小父类方法的访问权限
例如 ,前面我们学习过 ,public是访问权限最大的 ,如果父类方法采用的是这个权限 ,子类的同名方法就不可以使用 例如 protected private 这些访问修饰符 ,不然就会报错
练习
对方法的重写和重载做一个比较
名称 | 发生范围 | 方法名 | 参数列表(形参列表) | 返回类型 | 修饰符 |
---|---|---|---|---|---|
重载(overload) | 本类 | 必须一样 | 类型, 个数 ,顺序 ,至少有一个不同(即不能完全一致) | 没有要求 | 无要求 |
重写(override) | 父子类 | 必须一样 | 必须一致 | 子类重写的方法返回的类型和父类返回的类型一致 ,或者是其子类 | 子类方法不能缩小父类方法的访问范围 |
题2
OverrideExercise.java
-
编写一个Person类,包括属性/private(name、age),构造器、方法say(返回自我介绍的字符串)
-
编写一个Student类,继承Person类,增加id、score属性/private,以及构造器,定义say方法(返回自我介绍的信息)。
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具