Java语言中的重写和重载

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

Java语言中的重写(override)和重载(overload)

重写(override)和重载(overload)是编程语言中的两个常见概念,用于描述函数或方法的特定行为。

重写指的是在子类中重新定义(覆盖)父类中已经存在的同名方法。重写可以修改或扩展父类的方法实现,使其更适合子类的需求。在重写中,子类方法的名称、参数类型、返回值类型必须与父类方法完全一致。

重载指的是在同一个类中定义多个同名的方法,但它们具有不同的参数类型和/或数量。在调用这些方法时,编译器会根据传入的参数类型和数量选择相应的方法进行调用。重载方法的返回值类型可以相同也可以不同。方法的名称必须相同,但参数列表必须有所不同。Java语言中的重载(overload)只能同一个类中。

一个重写方法的例子

假设有一个名为 "Vehicle" 的父类,其中包含一个名为 "move" 的方法。如果我们创建了一个名为 "Car" 的子类,并希望修改 "move" 方法的实现,以便更好地适应汽车的运动方式,那么我们可以使用重写在 "Car" 类中重新定义 "move" 方法。源码如下:

//重写示例
class Vehicle {
  public void move() {
    System.out.println("The vehicle is moving.");
  }
}

class Car extends Vehicle {
  @Override
  public void move() {
    System.out.println("The car is driving on the road.");
  }
}

public class TestOverride {
   public static void main(String args[]){
      Vehicle a = new Vehicle (); // Vehicle 对象
      Vehicle b = new Car(); // Car对象
 
      a.move();// 执行 Vehicle 类的方法
 
      b.move();//执行 Car 类的方法
   }
}

在这个例子中,Car 类重写了 Vehicle 类的 move() 方法,因此当我们调用 Car 的 move() 方法时,它将输出 "The car is driving on the road." 而不是原来的 "The vehicle is moving."。

特别提示,@Override注解不是必需的,但建议在重写父类方法时使用它。

@Override注解可以省略,但不建议这样做。如果我们在子类中重写了父类的方法,并且使用了@Override注解来标识这个方法,那么编译器会在编译时检查该方法是否正确地覆盖了父类中的同名方法。这可以帮助我们避免一些错误。如果我们省略了@Override注解,则编译器将无法检查出这些错误。

使用@Override注解还可以使代码更加易读和易维护。在阅读代码时,我们可以很容易地看到哪些方法是重写了父类中的方法。

一个重载方法的例子

源码如下:

//重载示例
class TestOverload{
  public int add(int a, int b) {
    return a + b;
  }
  
  public int add(int a, int b, int c) {
    return a + b + c;
  }
  
  public String add(String a, String b) {
    return a + b;
  }

  public static void main(String[] args){
    TestOverload o = new  TestOverload();
    int result1 = o.add(10,20); //执行int add(int a, int b)方法
    System.out.println(result1); //30
    int result2 = o.add(10,20,30); //执行int add(int a, int b, int c)方法       
    System.out.println(result2); //60
    String result3 = o.add("10", "20"); //执行String add(String a, String b)方法
    System.out.println(result3); //1020
  }
}

在这个例子中,我们在TestOverload类中定义了三个名为 "add" 的方法。一个接收int类型2个参数,一个接收int类型3个参数,还有一个接收String类型参数。当我们使用 TestOverload类的对象调用 add() 方法时,编译器会根据传入的参数类型和数量选择相应的方法进行调用。

在Java中,多态性是指同一个方法名称可以被不同的对象调用,且能够根据调用对象的实际类型来执行不同的方法。方法重载和方法重写是Java多态性的两种不同表现形式。

方法重载是指在同一个类中,可以有多个方法具有相同的名称,但参数列表必须不同或参数类型不同。重载方法可以有不同的返回类型,只要参数列表不同即可。

而方法重写是指子类实现了与父类相同的方法名称、参数类型和返回类型的方法。子类在重写方法时,可以改变方法的实现细节,但不能改变方法的名称、参数列表和返回类型。通过方法重写,子类可以覆盖掉父类的方法,并使用自己的实现逻辑。

方法重载和方法重写都是Java中多态性的不同表现,可以让程序更加灵活和易于扩展。

小结

重写(Override)是指子类使用与父类相同的方法名、返回类型和参数类型来覆盖父类中已有的方法实现。当我们需要修改父类中的方法实现时,就需要重写该方法。重写的方法不能比原来的方法具有更严格的访问权限,因为重写后的方法要能被父类类型的引用调用。重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。

重载(Overload)是指在同一个类中,有多个方法名称相同但参数列表不同的方法。它们的方法名相同,但参数类型、个数或顺序不同,即为重载。重载方法可以返回不同的值类型。

方法的重写和重载是Java多态性的不同表现,方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现。文章来源地址https://www.toymoban.com/news/detail-437972.html

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

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

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

相关文章

  • Unity中的重载和重写

    重载:(两个必须一个可以) 参数名必须相同 参数列表必须不同 返回值类型可以不同 代码示例: 结果: 重写:(三个必须) 函数名必须相同 参数列表必须相同 返回值类型必须相同 代码示例: 父类 子类继承父类 结果: 多态、封装、继承的位置不同,重载在同一定义域

    2024年02月11日
    浏览(37)
  • Go语言支持重载吗?如何实现重写?

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

    2024年04月09日
    浏览(46)
  • python中的类class: 继承、覆盖、重写、重载、扩展、多态、封装

    使用  class  创建类。类中有方法、属性。 1.1 __init__() 函数 类的内置  __init__()  函数。所有类都有一个名为 __init__() 的函数,它在启动类时执行。 使用 __init__() 函数将值赋给对象属性,或者在创建对象时需要执行的其他操作。 每次使用类创建新对象时,都会 自动调

    2024年02月08日
    浏览(48)
  • Java中方法的重载与重写

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

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

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

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

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

    2023年04月20日
    浏览(52)
  • 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日
    浏览(50)
  • Java中方法的重载和重写的区别。

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

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

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

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

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

    2024年02月05日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包