Java中Overload和Override的区别

方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。
重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。

[size=large]Overload(重载、过载)[/size]
[b]定义:[/b]
如果在同一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。

[b]特点:[/b]
1、每个重载的方法都必须有一个独一无二的参数类型列表(即,不同的参数类型,不同的参数个数,不同的参数顺序),当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int)。
2、不能通过访问权限、返回类型、抛出的异常进行重载。
3、重载方法存在于同类中。

[b]示例:[/b]
package test;

public class Overloading {

public void f(int i, String s) {
System.out.println("初始定义方法:f(int,String)");
}

public void f(char c, double d) {
System.out.println("方法重载1:不同的参数类型。");
}

public void f(int i) {
System.out.println("方法重载2:不同的参数个数。");
}

public void f(String s, int i) {
System.out.println("方法重载3:不同的参数顺序");
}
}


[size=large]Override(重写、覆盖)[/size]
[b]定义:[/b]
如果子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。

[b]特点:[/b]
1、子类和父类中的方法名、参数、返回值都必须相同。
2、子类方法不能缩小父类方法的访问权限,如不能用private覆盖public方法。
3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。
4、如果某一方法在父类中的权限是private,那么子类并没有对其重写,只是定义了一个新方法。
5、父类方法被定义为final不能被重写。
6、存在于父类和子类之间,若子类的方法名和父类相同,要么是重写(覆盖),要么是重载,要么就错误。
[b]
示例:[/b]
package test;

public class Father{
public void say(String s) {
System.out.println("father say()");
}
}

package test;

public class Son extends Father{
public void say(String s) {
super.say(s); //super调用父类方法
System.out.println("son say()");
}

public static void main(String args[]) {
Son s = new Son();
s.say("say what?");
}
}

///output:
father say()
son say()


[size=large]重构[/size]
[b]定义:[/b]
在软件工程中,尽量不改变接口的前提下,进行修改bug,提高效率,增加新功能等工作,从而调整软件结构,改进代码质量,使代码更易维护、阅读等等。。

[b]特点:[/b]
1、可以通过重写或重载实现。
2、可以更改注释、更改函数名、类名等。

[color=darkred][b]总结:
重构(refactor):发生在软件工程中,调整软件结构,改进代码质量,使代码更易维护、阅读等。
重写(override):java多台在父类与子类(即类与类)之间的体现,让子类覆盖父类的相同方法。
重载(overload):java多态性在个类中(即一个类)的体现,让相同方法接受不同参数,实现不同功能。[/b][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值