【重载与重写】
重载:同一个类中有一些方法,其方法名相同,但是参数个数,参数类型不同
重载规则:
- 被重载的方法必须改变参数列表(参数个数或类型不一样);
- 被重载的方法可以改变返回类型;
- 被重载的方法可以改变访问修饰符;
- 被重载的方法可以声明新的或更广的检查异常;
- 方法能够在同一个类中或者在一个子类中被重载。
- 无法以返回值类型作为重载函数的区分标准。
和重写的主要区别:重载范围是一个类内,重写存在于是父子类关系之中
重写(override):重写需要类与类有继承关系,比如A extends B,而且是针对非静态的方法
我们都知道,子类可以继承父类的属性,方法(注意私有类型除外),倘若我们想在父类方法基础上做一些修改,添加,那就叫重写,字面意思,子类可以对父类的方法进行修改(重写后如果还想用父类的原方法就需要super关键字,
举例:(注意都在一个包下)
父类Animal
public class Animal { public void run(){ System.out.println("动物都会跑"); } }
子类Cat
public class Cat extends Animal { public void run(){ super.run();//自己重写父类方法后还想再调用父类的那个方法就用super关键字 System.out.println("猫会跑"); System.out.println("猫跑起来静悄悄"); } }
测试类
public class demo4 { public static void main(String[] args) { //重写后都是输出子类方法 Cat cat = new Cat(); Animal animal = new Cat();//向上转型 animal.run(); } }
输出结果:
动物都会跑
猫会跑
猫跑起来静悄悄
如果不用super调用 ,那就只会输出后两句:
猫会跑
猫跑起来静悄悄
总结:方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。
标签:
java基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统