简述java中方法重写与重载_Java中方法重载与方法重写的区别

二者名字相似,但用处大不相同

方法重载

java在同一个类中可以定义多个重名的方法,用于不同的用途。这些同名的不同方法之间的区别在于参数列表的不同。这就是方法重载。

比如写一个比大小的程序

//比大小

public static int numMax(int a1, int a2){

if(a1 > a2) {

return a1;

} else {

return a2;

}

}

//比大小

public static double numMax(double a1, double a2){

if(a1 > a2) {

return a1;

} else {

return a2;

}

}

复制代码

可以看到,两个方法名字都叫做numMax,但是返回值不同,一个是int型,另一个是double型,另外就是比较的参数类型也是不同的。

如果在main方法中进行如下比较:

public static void main(String[] args){

int num1 = 1;

int num2 = 2;

System.out.println(numMax(num1, num2));

}

//2

复制代码

声明的两个变量都是int型,返回的值也是int型。

如果把值换成double型

public static void main(String[] args){

double num1 = 1.0;

double num2 = 2.0;

System.out.println(numMax(num1, num2));

}

//2.0

复制代码

那么返回的值也变成了double型。

也就是在本示例中,参数类型如果是int型,那么就会调用第一个方法;参数类型如果是double型,就会调用第二个方法。这是Java虚拟机自行判断的

重载的规则如下:

方法名称必须相同

参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)

方法的返回类型可以相同,也可以不同

仅仅返回类型不同不足以构成方法的重载

针对第四条,如果我们仅仅修改返回类型,就会报出一条错误(已经被定义)

e3b44fed5c9483ebb48cd7cbaf984ccd.png

方法重写

重写是不同类之间的操作,且要求它们之间有继承的关系。子类重写父类的方法。

当子类不需要或者不满足父类的功能时就应用到了重写

现在定义三个类,类1名为Application,用来存放我们的主方法;类2名为B;类3名为A,且继承B类。

给出B的程序:

public class B{

public void test(){

System.out.println("B==>test");

}

}

复制代码

如果我们想要重写B类中的test方法,可以使用快捷键alt+Insert,弹出窗口如下,可以看到重写方法命令

a59f90553bf499421121502150976b6f.png

点击后会获得如下程序:

public class A extends B{

@Override

public void test(){

super.test();

}

}

复制代码

其中@Override是一个注解,表示重写。可以看到,系统默认调用父类的方法,我们可以对它做出修改。

public class A extends B{

@Override

public void test(){

//super.test();

System.out.println("A==>test");

}

}

复制代码

主方法中程序如下:

public class Application{

public static void main(String[] args){

A a = new A();

a.test();

B b = new B();

b.test();

}

}

//A==>test

//B==>test

复制代码

调用同样的方法,可以看到父类输出"B==>test",子类输出"A==>test",子类对父类实现了重写

总结重写的特征:

方法名必须相同

参数列表必须相同

修饰符范围可以扩大但不能缩小(public>Protected>Default>private)

抛出异常的范围可以被缩小,但不能扩大

不能被重写的方法有:static 静态方法, private 私有方法,final 常量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值