java.8 - java -override&overload 重写和重载

这篇具有很好参考价值的文章主要介绍了java.8 - java -override&overload 重写和重载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常。例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,抛出 IOException 异常或者 IOException 的子类异常。

方法的重写规则:

  • 【重写参数列表】1、参数列表与被重写方法的参数列表必须完全相同。

  • 【重写返回类型】2、返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类(java5 及更早版本返回类型要一样,java7 及更高版本可以不同)。

  • 【重写方法的访问权限】3、访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected。

  • 【重写子类方法范围】4、构造方法不能被重写。声明为 final 的方法不能被重写。声明为 static 的方法不能被重写,但是能够被再次声明。子类和父类在同一个包中,那么子类可以重写父类非 private 和 final 的方法。子类和父类不在同一个包中,那么子类只能够重写父类的声明为 public 和 protected 的非 final 方法。

  • 【重写子类异常范围】5、重写的方法能够抛出任何非强制异常,无论被重写的方法是否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则可以。

  • 【重写基于继承】6、父类的成员方法只能被它的子类重写,如果不能继承一个类,则不能重写该类的方法。

Super 关键字的使用

当需要在子类中调用父类的被重写方法时,要使用 super 关键字。

重载(Overload)

重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

重载规则:

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。

java.8 - java -override&overload 重写和重载,2023-java,java,开发语言,spring

总结

方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载可以理解成多态的具体表现形式。

  • (1)方法重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overloading)。
  • (2)方法重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Overriding)。
  • (3)方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。

java.8 - java -override&overload 重写和重载,2023-java,java,开发语言,spring文章来源地址https://www.toymoban.com/news/detail-674875.html

到了这里,关于java.8 - java -override&overload 重写和重载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go语言支持重载吗?如何实现重写?

    Go语言不支持传统意义上的函数和方法重载。在Go语言中,函数名或方法名不能相同但参数列表不同,因为这会导致编译错误。 然而,可以通过方法重写(override)来实现类似的功能。方法重写是指在子类中定义一个与父类同名的方法,从而覆盖父类中的方法。 下面是一个简

    2024年04月09日
    浏览(46)
  • Java中方法的重载与重写

    提示:这里可以添加本文要记录的大概内容: 方法的重载与重写容易混,所以单独拿出来比较 提示:以下是本篇文章正文内容,下面案例可供参考 在同一个类中,允许定义一个以上同名的方法称为方法重载 方法重载的规则: 方法名相同 方法的参数必须不同,参数类型或参

    2024年02月08日
    浏览(46)
  • java面试基础 -- 方法重载 & 方法重写

    目录 重载 重写           方法的重载是指在同一个类中定义多个方法, 他们具有相同的名称, 但是具有不同的参数列表, 例如:         此处我们看到三个不同参数的, 但是具有相同返回值和方法名的方法. 有如下测试案例: 运行结果为:  我们将其中一个myMethod方法的返回值改

    2024年02月12日
    浏览(54)
  • 关于Java中方法重载和方法重写

    方法重写是子类继承父类(默认继承Object类)后覆盖父类的方法 需要保证同名 同参 同返回值 且访问权限范围不能缩小(publicprotecteddefaultprivate) 方法重载是同类中可以有多个同名但参数不同的方法 调用方法的时候可根据传参情况执行对应的方法 需要注意参数不同可以指参数数量

    2023年04月20日
    浏览(53)
  • java八股文面试[java基础]—— 重载 和 重写

      Overload Override Overwrite三者区别:   Java中,有一个名叫方法签名的东西,它的定义是这样的 Definition: Two of the components of a method declaration comprise the method signature—the method’s name and the parameter types. 大概意思是,方法签名有两部分组成——方法名和参数列表 我上面的函数的方法

    2024年02月12日
    浏览(52)
  • Java中方法的重载和重写的区别。

    一、定义上的区别: 1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。 2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实

    2023年04月08日
    浏览(51)
  • Python中重写(override)

    Python中,有重写(override)的概念,但是没有严格意义上的重载(overload)。 类继承时,子类可以重新定义父类中已有的方法,称为重写(Override)。 在Python中,没有像其他语言(如C++)那样的函数重载(Overload)机制。函数重载是指在同一作用域内允许多个函数具有相同的名

    2024年02月02日
    浏览(51)
  • 【JAVA杂货铺】一文带你走进面向对象编程|继承|重载|重写|期末复习系列 | (中4)

    🌈个人主页:  Aileen_0v0 🔥系列专栏 :Java学习系列专栏 💫个人格言:\\\"没有罗马,那就自己创造罗马~\\\"   目录 继承  私有成员变量在继承中的使用​编辑  当子类和父类变量不重名时: 当子类和父类重名时:  📝总结: 继承的含义: toString方法的作用:  重写和重载的区别 对比狗和

    2024年02月05日
    浏览(58)
  • C++多态与虚拟:函数重载(Function Overloading)

    重载(Overloading):所谓重载是指不同的函数实体共用一个函数名称。例如以下代码所提到的CPoint之中,有两个member functions的名称同为x():    其两个member functions实现代码如下: 函数名称相同,但参数不同(个数不同,型别也不同),实现代码也不相同。C++之所以有function

    2024年04月25日
    浏览(40)
  • C++多态与虚拟:运算符重载(Operator Overloading)

    运算符重载: 与function overloading异曲同工的是,C++提供所谓的Operator overloading。所谓operators是像    + (加) - (減) * (乘) / (除) (位右移) (位左移)之类的符号,代表一种动作。 面对operators,我们应该把他想像是一种函数,只不过形式比较特殊罢了。一般函数的参

    2024年04月25日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包