首页 > 其他分享 >2.5. 重载与覆盖

2.5. 重载与覆盖

时间:2023-05-30 13:33:45浏览次数:47  
标签:makeSound 覆盖 int add Animal 重载 方法 public 2.5

在 Java 中,方法的重载(Overloading)和覆盖(Overriding)是两个重要的概念。它们都涉及到方法的定义与使用,但作用和规则有所不同。

重载(Overloading)

重载是指在同一个类中定义多个同名的方法,但它们的参数列表不同(参数的个数、类型或顺序不同)。重载允许我们使用相同的方法名来实现不同的功能,提高了代码的可读性和可维护性。

下面是一个重载的例子:

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }

    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

在这个例子中,Calculator 类有三个 add 方法,分别接受不同数量和类型的参数。当我们调用 add 方法时,Java 会根据传入参数的类型和数量自动选择正确的方法。

Calculator calculator = new Calculator();
int result1 = calculator.add(1, 2); // 调用第一个 add 方法,输出 3
double result2 = calculator.add(1.0, 2.0); // 调用第二个 add 方法,输出 3.0
int result3 = calculator.add(1, 2, 3); // 调用第三个 add 方法,输出 6

覆盖(Overriding)

覆盖是指子类重新定义父类的方法,以实现自己的功能。当子类覆盖父类的方法时,方法名、参数列表和返回类型必须与父类完全相同。覆盖允许我们在不修改父类的基础上,定制子类的行为。

下面是一个覆盖的例子:

public class Animal {
    public void makeSound() {
        System.out.println("The animal makes a sound");
    }
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("The dog barks");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("The cat meows");
    }
}

在这个例子中,Dog 和 Cat 类都继承了 Animal 类,并分别覆盖了 makeSound 方法。当我们调用 makeSound 方法时,Java 会根据对象的实际类型选择正确的方法。

Animal myAnimal = new Animal();
myAnimal.makeSound(); // 输出 "The animal makes a sound"

Animal myDog = new Dog();
myDog.makeSound(); // 输出 "The dog barks"

Animal myCat = new Cat();
myCat.makeSound(); // 输出 "The cat meows"

注意,当子类覆盖父类的方法时,可以使用 @Override 注解来显式声明。这样,如果我们不小心修改了方法签名或者拼写错误,编译器会报错,帮助我们捕获潜在的错误。

总结一下,重载和覆盖是 Java 中两个重要的概念。重载允许我们在同一个类中定义多个同名但参数列表不同的方法,实现不同的功能。覆盖允许子类重新定义父类的方法,定制自己的行为。理解这些概念并在实际编程中应用它们,可以帮助我们编写更高效、易读的代码。

file

file

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

标签:makeSound,覆盖,int,add,Animal,重载,方法,public,2.5
From: https://www.cnblogs.com/yaoqian/p/17442976.html

相关文章

  • 塔克拉玛干沙漠5G基站成为首个700MHz5G超远覆盖基站
    安科瑞虞佳豪近日,在位于新疆巴音郭勒蒙古自治州轮台县的塔克拉玛干沙漠,中国移动新疆公司开通了首个沙漠公路700MHz5G超远覆盖基站,覆盖距离达30公里。新疆移动网络优化中心总经理祁江伟介绍,700MHz网络由中国移动和中国广电共建共享,具有绕射能力强等优势,尤其适合新疆区域地广人稀......
  • python 读取、写入、追加、覆盖xls文件
    python读取、写入、追加、覆盖xls文件0、写在前面测试源xls是这样的1、读取xlsdefread_xls(filename:str,sheet_name:str)->List[list]:filename=os.path.abspath(filename)assertos.path.isfile(filename),f'{filename}isnotfile'assertfilen......
  • Problem A: 整型数组运算符重载
    HomeWebBoardProblemSetStandingStatusStatisticsProblemA:整型数组运算符重载TimeLimit:1Sec  MemoryLimit:128MBSubmit:1458  Solved:954[Submit][Status][WebBoard]Description定义Array类:1.拥有数据成员intlength和int*mems,分别是数......
  • 方法重载
    packagecom.karl2;publicclassMethoOverDemo{publicstaticvoidmain(String[]args){//方法重载kokoko();sasasa(100);fire();fire("米国");fire("米国",999);}publicstaticvoi......
  • 使用 Linux 命令如何恢复被覆盖的文件 All In One
    使用Linux命令如何恢复被覆盖的文件AllInOne数据还原/数据恢复errors#通配符`*`两边有空格,导致所有文件被覆盖bug❌#$fswebcam--no-banner-r1280*720camera-test.jpg❌demos(......
  • MapStructPlus 1.2.5 发布,新增 Solon 支持
    MapStructPlus1.2.5发布,更新内容如下:fix:解决MapConvertMapperAdapter编译警告问题feat:增加nullValueMappingStrategy和nullValuePropertyMappingStrategy配置项feat:适配solon主要更新内容为适配Solon,使用方式基本等同于SpringBoot环境下的使用方式。与其......
  • nginx windows下重载配置失败
    正常操作命令是:cdC:\ProgramFiles\nginx&&nginx-sreload。但是把nginx安装为windows服务运行后,再执行重载就不好使了。会报错:nginx:[error]OpenEvent("Global\ngx_reload_4460")failed(5:Accessisdenied),即便是用管理员运行cmd权限也不够。 【解决办法】1.下载......
  • Python 函数重载
    函数重载是指可以使用相同的函数名,但是函数参数类型和/或数量不同的多个函数。Python不支持函数重载,因为Python是一种动态类型语言,函数参数类型不需要在代码中声明,并且Python中的函数参数数量也可以是可变的。这意味着在同一个作用域内定义两个或两个以上具有相同名称但参数......
  • Problem C: 重载字符的加减法
    HomeWebBoardProblemSetStandingStatusStatisticsProblemC:重载字符的加减法TimeLimit:1Sec  MemoryLimit:128MBSubmit:1895  Solved:1155[Submit][Status][WebBoard]Description定义一个字符类Character,只有一个char类型的数据成员。重载......
  • 2.5 自动微分
    2.5.1一个简单的例子importtorch假设我们函数\(y=2x^Tx\)关于列向量\(x\)求导。x=torch.arange(4.0)x.requires_grad_(True)#自动求导机制的必要参数此处两句等效于x=torch.arange(4.0,requires_grad=True)x,x.grad(tensor([0.,1.,2.,3.],requires_grad......