Java知识25 重写Override和重载Overload (重载需要巩固)【多测师】
一、重写:子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。子类可以根据需要实现父类的方法 重写方法不能抛出新的检查异常,只能抛出子类异常 面向对象可以重写任何现有的方法 实例如下: class Animal { public void move() { System.out.println("动物可以移动"); } } class Dog extends Animal { public void move() { System.out.println("狗可以跑和走"); } } 方法调用: public class TestDog { public static void main(String args[]) { Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();// 执行 Dog 类的方法 } } 运行结果: 动物可以移动 狗可以跑和走 二、分析上面实例 尽管b属于Animal类型 但它运行的是Dog类的move方法 所以上面例子能编译成功 因为Animal类中存在move方法 运行的是特定对象的方法 Dog子类当中定义一个bark的方法 在实例化 Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.move();// 执行 Animal 类的方法 b.move();// 执行 Dog 类的方法 b.bark(); 这时候程序会抛出一个编译错误 因为b的引用类型Animal没有bark方法 三、方法重写规则 参数列表必须完全和被重写方法相同 返回类型须与被重写方法的返回类型相同 访问权限必须比父类被重写的方法的访问权限高 父类的成员方法只能被子类重写 构造方法不能被重写 四、super关键字的使用 当需要在子类中调用父类的被重写方法时,要使用super关键字 实例如下: class Animal { public void move() { System.out.println("动物可以移动"); } } class Dog extends Animal { public void move() { super.move(); // 应用super类的方法 System.out.println("狗可以跑和走"); } } 调用: public class TestDog { public static void main(String args[]) { Animal b = new Dog(); // Dog 对象 b.move(); // 执行 Dog类的方法 } } 五、重载 重载是在一个类里面,方法名相同,而参数不同,返回类型可以相同可以不同 每个重载的方法(构造函数)都必须有独一无二的参数类型列表 构造器的重载用的比较多 重载规则: 被重载的方法必须改变参数列表,可以改变返回类型,可以改变访问修饰符 六、总结 方法的重载:定义了多个方法名相同,参数数量不同/相同、类型和次序不同 方法的重写:子类存在方法与父类的方法的名字相同,参数的个数和类型一致,返回值也一样的方法七、重载就是同样的一个方法能够根据输入数据的不同,做出不同的处理 重写就是当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法
分类:
多测师_Java编程相关
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)