欢迎访问宙启技术站
智能推送

了解Java函数的重载和重写技术

发布时间:2023-06-26 00:15:36

Java是一个面向对象语言,对于面向对象语言来说,函数是其内在的组成部分,而函数的重载和重写则是Java中常用的两种技术,这两种技术可以使得开发者更方便地复用现有的代码,同时也提高了代码的可读性和可维护性。

一、函数的重载

函数的重载是指在同一个类中,同时定义多个名称相同但参数列表不同的函数,这些函数的名称相同,但是它们的形参个数、形参顺序、形参类型任意一个不同,也可以有不同的返回值类型,从而使得它们能够完成各种不同的任务。

重载函数最重要的特点就是它们的名称相同,具体实现和调用时,根据参数列表来决定调用哪一个函数。下面我们通过一个例子来具体说明函数的重载。

public class MyClass{
    public void show(int a){
        System.out.println("int类型的参数为:"+a);
    }
    public void show(String s){
        System.out.println("字符串参数为:"+s);
    }
}

在上述代码中,我们定义了两个名称相同的函数show,它们的参数列表不同,一个支持int类型的参数,一个支持String类型的参数。当我们调用show方法时,Java编译器将根据我们传入的参数类型来决定调用哪一个函数。

MyClass mc = new MyClass();
mc.show(123); //打印:int类型的参数为:123
mc.show("hello"); //打印:字符串参数为:hello

上述例子中,Java编译器将 个show方法的调用定向到了接收int类型参数的函数,将第二个show方法的调用定向到了接收String类型参数的函数,这就是Java中函数的重载。

二、函数的重写

函数的重写是指在子类中定义一个与其父类名字相同、参数相同、返回值类型相同的函数,但是其具体实现不同,通过函数的重写,子类可以拥有自己的实现,而不是简单地继承父类的实现。

与函数的重载不同,函数的重写也叫做函数的覆盖,因为子类函数的实现是覆盖了父类函数的实现。下面我们通过一个例子来具体说明函数的重写。

public class Animal {
    public void move(){
        System.out.println("动物能移动");
    }
}
public class Dog extends Animal{
    public void move(){
        System.out.println("狗跑得快");
    }
}

在上述代码中,我们定义了一个动物类和一个狗类,狗类继承了动物类,同时在狗类中重写了父类中的move函数。当我们创建一个狗类的对象时,它将会调用自己的move方法,而不是从父类中继承下来的。

Dog dog = new Dog();
dog.move(); //打印:狗跑得快

这就是函数的重写,子类通过重写父类的函数,实现了自己的特定功能。

总结:

- 函数的重载是指在同一个类中定义多个名称相同但参数列表不同的函数。重载函数的最大特点就是它们的名称相同,具体使用时,根据参数列表来决定调用哪一个函数。

- 函数的重写是指子类中定义一个与其父类名字相同,参数相同,返回值类型相同的函数,但是其具体实现不同,通过函数的重写,子类实现了自己的特定功能。