温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java是如何区分重载和重写

发布时间:2021-12-21 10:51:41 来源:亿速云 阅读:119 作者:柒染 栏目:大数据

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();
    }
}

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

关于java是如何区分重载和重写问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI