前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java重载和重写的区别「建议收藏」

Java重载和重写的区别「建议收藏」

作者头像
全栈程序员站长
发布2022-09-30 11:28:37
2740
发布2022-09-30 11:28:37
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

方法的重载

1、方法的重载的概念

在同一个类中,允许存在一个以上的同名方法,只要同名的参数个数或者参数类型不同即可。

总结:”两同一不同“:同一个类、相同方法名

参数列表不同:参数个数不同,参数类型不同

2、例

构成重载的举例:

代码语言:javascript
复制
 //一
 //Arrays类中重载的sort() / binarySearch(); PrintStream中的println
 //二
 //如下的4个方法构成了重载
     public void getSum(int i,int j){
         System.out.println(i + j);
     }
 ​
     public void getSum(double d1,double d2){
 ​
     }
 ​
     public void getSum(String s,int i){
 ​
     }
 ​
     public void getSum(int i,String s){
 ​
     }

不能构成重载的举例:

代码语言:javascript
复制
 //    public int getSum(int i,int j){
 //        return 0;
 //    }
 //
 //    public void getSum(int m,int n){
 //
 //    }
 //
 //    private void getSum(int i,int j){
 //
 //    }

3、如何判断是否构成方法的重载?

严格按照定义判断:两同一不同

跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!

4、如何确定类中某一个方法的调用:

方法名 ——> 参数列表

方法的重写

1、什么是方法的重写(override 或 overwrite)?

子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作

2、应用:

重写以后,当创建子类对象以后,通过 子类对象调用子父类的同名同参数的方法时,实际执行的是子类重写父类的方法

3、举例:

代码语言:javascript
复制
 class Circle{
     public double findArea(){}//求面积
 }
 class Cylinder extends Circle{
     public double findArea(){}//求面积
 }
 //***********************
 class Account{
     public boolean withdraw(double amt){}
 }
 class ChexkAccount extends Account{
     public boolean withdraw(double amt){}
 }

4、重写的规则

方法的声明 : 权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型{

//方法体

}

约定俗称 : 子类中的叫重写的方法,父类中的叫被重写的方法

  1. 子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同
  2. 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
    • 特殊情况 :子类不能重写父类中声明为 private 权限的方法
  3. 返回值类型:
    • 父类被重写的方法的返回值类型是 void ,则子类重写的方法的返回值类型只能是 void
    • 父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
    • 父类被重写的方法的返回值类型是基本数据类型(比如:double),则子类重写的方法的返回值类型必须是相同的基本数据类型(必须也是 double)
  4. 子类重写的方法抛出的异常类型不大于父类被重写的方法抛出的异常类型(具体放到异常处理时候讲)

子类和父类中的同名同参数的方法要么都声明为非 static 的(考虑重写,要么都声明为 static 的(不是重写))。

要求:

  1. 子类重写的方法必须和父类被重写的方法具有相同的方法名称、参数列表
  2. 子类重写的方法的返回值类型不能大于父类被重写的方法的返回值类型
  3. 子类重写的方法使用的访问权限不能小于父类被重写的方法的访问权限
    • 子类不能重写父类中声明为 private 权限的方法
  4. 子类方法抛出的异常不能大于父类被重写方法的异常

注意:

子类与父类中同名同参数的方法必须同时声明为非 static 的(即为重写),或者同时声明为 static 的(不是重写)。因为 static 方法是属于类的,子类无法覆盖父类的方法。

所以说方法的重载与重写的区别?

没有关系,只是名字带重

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月9日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方法的重载
  • 方法的重写
    • 1、什么是方法的重写(override 或 overwrite)?
      • 2、应用:
        • 3、举例:
          • 4、重写的规则
            • 要求:
            • 注意:
          • 所以说方法的重载与重写的区别?
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档