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

Java函数 - 实现函数的重载和覆盖

发布时间:2023-06-02 04:23:36

Java中的函数有两种实现方式:重载和覆盖。在本文中,我们将详细介绍这两种方式。

重载

Java中的函数重载是指在同一个类中定义多个同名但参数不同的函数。函数的参数可以有不同的类型、个数或顺序,只要满足一个条件即可——函数名相同。

重载函数的特点:

1、函数名称相同。

2、参数个数不同。

3、参数类型不同。

4、参数顺序不同。

5、返回值类型可以相同也可以不同。

代码实现:

public class OverloadDemo {

   public void area(int a){
      System.out.println("Area of the square is "+a*a);
   }
   public void area(int a, int b){
      System.out.println("Area of the rectangle is "+a*b);
   }
   public void area(int a, int b, int c){
      System.out.println("Area of the triangle is "+(a+b+c));
   }
   public static void main(String args[]){
      OverloadDemo obj = new OverloadDemo();
      obj.area(4);
      obj.area(4, 5);
      obj.area(4, 5, 6);
   }
}

覆盖

Java中的函数覆盖是指派生类重新定义了基类中拥有相同名称的函数。覆盖函数必须与被覆盖函数具有相同名称、相同参数列表和相同的返回类型。此外,覆盖函数不能具有比被覆盖函数更严格的访问限制。

覆盖函数的特点:

1、函数名称相同。

2、参数列表需相同。

3、返回值类型也需相同。

4、覆盖函数的可见性不得弱于原函数。

代码实现:

class Animal {
    public void move() {
        System.out.println("动物可以移动");
    }
}

class Dog extends Animal {
    public void move() {
        System.out.println("狗可以跑和走");
    }
}

public class TestDog {
 
    public static void main(String args[]) {
        Animal a = new Animal(); 
        Animal b = new Dog(); 
 
        a.move();   
        b.move();   
    }
}

在上面的示例中,Animal类有一个move方法,它打印“动物可以移动”。然后,我们定义一个继承自Animal的Dog类,并覆盖了move方法。在测试类中,我们创建一个Animal类型的对象,并调用它的move方法。然后,我们创建一个Dog类型的对象并将其分配给Animal类型的变量,最终调用了move方法。在这种情况下,由于Dog类覆盖了Animal类的move方法,因此输出不同。

结论

Java中的函数有两种实现方式:重载和覆盖。这两种方式都可以在程序中实现多态性。重载函数表示同一操作针对不同数据执行的不同实现,而覆盖函数表示一个派生类重新定义了其基类的函数。在使用这两种方式时,请始终遵循Java中的规则。