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

Java中如何实现函数的重载与函数重写?

发布时间:2023-06-16 02:23:58

Java中函数的重载和函数的重写都是面向对象编程中常用的技术,实现函数的重载可以让我们在一个类中定义多个同名函数,这些函数的参数列表不同,而实现函数的重写则可以让子类重新定义父类中的方法,以便适应子类的特殊需求。

一、函数的重载

函数的重载指的是在一个类中定义多个同名函数,这些函数的参数列表不同。Java编译器会根据不同的参数列表选择调用不同的函数。函数的参数列表不同主要指参数类型、参数个数、参数顺序三方面的不同。

下面是一个简单的例子:

public class OverloadDemo {

   public void print(){

        System.out.println("Hello world!");

   }

   public void print(int x){

        System.out.println("Hello world!"+x);

   }

   public void print(double x){

        System.out.println("Hello world!"+x);

   }

   public static void main(String args[]){

        OverloadDemo overloadDemo=new OverloadDemo();

        overloadDemo.print();

        overloadDemo.print(10);

        overloadDemo.print(17.5);

   }

}

输出结果为:

Hello world!

Hello world!10

Hello world!17.5

函数的重载可以让我们写出更加灵活、具有可复用性的代码,但是要注意不要出现方法的歧义性。即要保证重载方法的参数列表都是不同的,否则编译器会报错,例如:

public void test(int x,float y){}

public void test(float x,int y){}

上面的代码就不会出现歧义。

二、函数的重写

函数的重写指的是子类重新定义父类中的方法,以便适应子类的特殊需求。Java中使用“@Override”关键字来定义重写方法。对于重写方法,子类必须与父类的方法有相同的方法名、返回类型和参数列表。但是子类可以重新定义方法的实现方式。

下面是一个简单的例子:

public class Test{

    public void run(){

        System.out.println("跑步");

    }

}

public class Student extends Test {

    @Override

    public void run() {

        System.out.println("学生在跑步");

    }

}

public class Teacher extends Test {

    @Override

    public void run() {

        System.out.println("老师在跑步");

    }

}

现在我们可以通过Student调用run方法,结果为“学生在跑步”,通过Teacher调用run方法,结果为“老师在跑步”。这就实现了函数的重写。

如果在子类中定义的方法与父类中的方法的方法名、返回类型和参数列表不一致,则不是重写方法,而是新的方法,例如:

public class Test{

    public void run(){

        System.out.println("跑步");

    }

}

public class Student extends Test {

    public void run(int a) {

        System.out.println("学生在跑步");

    }

}

此时,Student类中的run方法是新方法,而不是父类中的重写方法。

总之,Java中函数的重载和函数的重写都是面向对象编程中非常重要的技术,需要我们在实际的开发中灵活运用,以提高代码的可复用性和可维护性。