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

Java重载和重写的区别「建议收藏」1、方法的重载的概念在同一个类中,允许存在一个以上的同名方法,只要同名的参数个数或者参数类型不同即可。总结:”两同一不同”:同一个类、相同方法名参数列表不同:参数个数不同,参数类型不同2、例构成重载的举例:不能构成重载的举例:3、如何判断是否构成方法的重载?严格按照定义判断:两同一不同跟方法的权限修饰符、返回值类型、形参变量名、方法体都没关系!4、如何确定类中某一个方法的调用:方法名——>参数列表子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作重写以后,当创建子类对象以后,通过

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

方法的重载

1、方法的重载的概念

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

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

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

2、例

构成重载的举例:

 //一
 //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){
 ​
     }

不能构成重载的举例:

 //    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、举例:

 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 方法是属于类的,子类无法覆盖父类的方法。

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

没有关系,只是名字带重

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195563.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python-opencv2利用cv2.findContours()函数来查找检测物体的轮廓

    python-opencv2利用cv2.findContours()函数来查找检测物体的轮廓转自http://blog.csdn.net/sunny2038/article/details/12889059相比C++而言,Python适合做原型。本系列的文章介绍如何在python中用OpenCV图形库,以及与C++调用相应opencv函数的不同之处。这篇文章介绍在Python中使用OpenCV检测并绘制轮廓。提示:转载请详细注明原作者及出处,谢谢! 本文介绍在OpenCV…

    2022年10月4日
    3
  • 发布小工具:Ip一键切换V1.0「建议收藏」

    发布小工具:Ip一键切换V1.0「建议收藏」你还在手动修改Ip么?IP地址一键切换,你经历过么?Download一个试试吧。本工具用批处理实现,无需安装,绿色安全。

    2022年8月3日
    16
  • python 实现输入一个小于1000的整数,对其进行因式分解

    python 实现输入一个小于1000的整数,对其进行因式分解

    2021年11月11日
    109
  • JavaScript-匿名函数[通俗易懂]

    JavaScript-匿名函数[通俗易懂]什么是匿名函数1、匿名函数,即没有名称的函数2、如果单独只写一个匿名函数,此时是不符合语法要求的会报错。需要给匿名函数包裹一个括号,使之成为表达式。3、被小括号包裹的内容会被js识别为一个函数表达式如何执行和使用匿名函数?需要执行匿名函数后面追加括号即可也就是立即执行函数方式一:小括号只将匿名函数包裹起来后面跟随执行的小括号(常用)(function(){alert(‘匿名函数执行方式一’)})();小括号将匿名函数以及执行匿名函数的小括号都包裹起来

    2022年10月3日
    2
  • linux终端定时器实验报告,定时器实验报告.doc

    linux终端定时器实验报告,定时器实验报告.doc定时器实验报告实验六 定时器/计数器一、实验目的⒈ 学会8253芯片和微机接口的原理和方法。掌握8253定时器/计数器的工作方式和编程原理。二、实验内容用8253的0通道工作在方式3,产生方波。三、实验接线图四、编程指南⒈ 8253芯片介绍8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。8253的功能用途:延时中断 实时时钟可编程频率发…

    2022年7月26日
    14
  • 音频编辑大师 3.3 注册名称 许可证

    音频编辑大师 3.3 注册名称 许可证

    2021年12月31日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号