JAVA笔记之override、overwrite和overload的区别

方法覆盖与重载详解
本文深入解析了方法覆盖(override)、方法重写(overwrite)和方法重载(overload)的概念,阐述了它们在子类继承父类时的不同表现形式,以及在同一个类中如何通过参数列表的变化实现方法的重载。

1.override(方法覆盖)

子类继承了父类的同名无参函数。当子类从父类继承了一个无参函数,而又定义了一个同样的无参函数,则子类定义的方法覆盖父类的方法,称为覆盖。

2.overwrite(方法重写)

当前类的同名方法。通过方法的重写,一个类可以有多个具有相同名字的方法,由传递给它们不同的个数和类型的参数来决定使用哪种方法。因此,重写的名称是当前类中的同名函数,不是父类中的函数名。

3.overload(方法重载)

子类继承了父类的同名有参函数。当子类继承了父类的一个同名方法,且方法参数不同,称为重载。通过方法的重载,子类可以重新实现父类的某些方法,使其具有自己的特征。

参考原文章出处

overriding(方法重写)也就是方法覆盖:发生在子父类中,方法名、参数列表、返回值相同,子类的访问修饰符要大于或等于父类的访问修饰符,子类的异常声明必须小于或等于父类的异常声明。如果方法被private,static,final修饰,则不能被重写。
overloading(方法重载):发生在同一个类中,方法名相同,参数列表不同,与返回值无关。

### Java中的OverrideOverwriteOverload #### Override方法 在面向对象编程中,`override`是指子类重新定义父类的方法。这允许子类提供特定实现来替代继承自父类的行为。为了成功覆盖一个方法,在子类中声明的方法签名(包括名称、参数列表以及返回类型)应当与父类中的被重写方法相匹配。 ```java class Animal { public void makeSound() { System.out.println("Some sound"); } } class Dog extends Animal { @Override public void makeSound() { System.out.println("Bark bark!"); } } ``` 上述例子展示了如何通过使用`@Override`注解来指示编译器该方法意在覆盖超类中的同名方法[^1]。 #### Overload方法 不同于`override`,`overload`发生在同一个类内部,当多个具有相同名字但是不同参数列表的方法存在时即发生过载。这意味着这些方法可以有不同的数量或类型的输入参数,甚至它们的顺序也可以不一样;然而,返回值类型并不影响是否构成重载的一部分条件之一。 ```java public class Calculator { int add(int a, int b){ return a+b; } double add(double a,double b){ return a+b; } float add(float a,float b,int c){ return a+b+c; } } ``` 此代码片段说明了一个名为`add()`函数的不同版本是如何在同一类内共存并根据调用时传递给它的实参自动选择最合适的那个版本执行[^2]。 #### 关于Overwrite概念 值得注意的是,“overwrite”并不是Java官方术语,通常指的是文件操作里的一种行为——新数据会替换旧有位置上的内容而不增加额外存储空间。但在讨论OOP特性时不常用到这个词。如果提到它,则可能指代错误地隐藏了基类成员变量或方法而不是正式意义上的多态机制下的合法覆写过程。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值