APP下载

java过载与重写 你能正确区分吗?

消息来源:baojiabao.com 作者: 发布时间:2024-05-08

报价宝综合消息java过载与重写 你能正确区分吗?

我们在平时开发的时候经常会遇见这样一个问题,方法的过载和重写。有时候经常搞混,这篇文章就是为了很好的去整理区分一下。

一个类中,可以有很多的构造方法,而且名字相同都是类名,其实这些方法就已经构成了过载。也就是说,在一个类中,可以有很多名字相同的不同方法。现在一个问题来了,就是java是如何区分这些方法的呢?

方法过载

其实区分过载,有一个很简便的方法,那就是每一个方法有一个独一无二的引数列表。

public class Son extends Father{

int fff(){

return 0;

}

String fff(int x,String y){

return "";

}

void fff(String y,int x){};

public static void main(String[] args) {

Son son=new Son();

}

}

由以上程式码可以看到:

1、引数个数不同可以区分

2、引数的顺序不同可以区分。

注意;返回值型别不同不能区分。

为什么返回值型别不同不能区分呢?这是因为有时候我们定义的方法,我们只是想要简单地去呼叫,而不想去获取他的返回值。

比如:在呼叫fff()时,只需要呼叫fff()或者是fff(1,"资料")而不去获取他的返回值。这样jvm是无法区分的。

方法重写

先看一下重写的概念:

1、在子类中可以根据需要对从基类中继承来的方法进行重写。

2、重写的方法和被重写的方法必须具有相同方法名称、引数列表和返回型别。(注:返回值可以为父类中返回值的子型别.引数若为子类,则不是重写是过载)

3、重写方法不能使用比被重写的方法更严格的访问许可权。

4、重写方法不能宣告丢掷比被重写方法范围更大的异常型别。

总结:重写是子类对所继承父类相同方法的一种更改,这个更改需要遵循格式按照父类的格式,访问许可权,丢掷异常等等,都在父类方法控制范围内,内部具体实现可以实现不同的效果。

通俗一点来说:重写就是对父类的的同一个方法的改写,但是别人怎么知道你这是重写,不是新增的新方法?这就要求格式必须跟父类相同,别人一看,呀,他俩长的一模一样(指的上面2,3,4规则),肯定是重新写了,就是重写。

看一个例子:

定义父类:

public class Father extends Grandpa {

String add(int a,int b){

int c=a+b;

return ""+c;

}

}

定义子类

public class Son extends Father{

String add(int a,int b){

int c=a+b;

return ""+c;

}

public static void main(String[] args) {

Son son=new Son();

}

}

这样就完成了方法的重写。

2019-10-16 18:55:00

相关文章