Java中的函数重载和重写。
Java中的函数重载和重写是面向对象编程语言中的两个重要概念。函数重载(Method Overloading)指的是在同一个类中,可以定义多个同名函数但参数列表不同的方法。函数重写(Method Overriding)是指子类重写父类中同名方法的过程。
1. 函数重载
Java中的函数重载体现了Java语言的多态性特点。函数重载可以增加函数的适用性,提高代码的复用性和易读性。Java中函数重载的基本要求是:函数名必须相同,参数列表必须不同。
函数重载的实现方式有两种:
①参数个数不同:在一个类中定义多个同名函数,但它们的形参个数不同。例如:
public static int add(int a, int b) {
return a + b;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
上述代码中的两个add()方法的的参数个数不同,分别可以接收两个和三个参数,通过区分参数个数来区分它们的功能。
②参数类型不同:在一个类中定义多个同名函数,但它们的形参类型不同。例如:
public static int add(int a, int b) {
return a +b;
}
public static double add(double a, double b) {
return a + b;
}
上述代码中的两个add()方法接收的参数类型分别为int和double,通过区分参数类型来区分它们的功能。
需要注意的是,函数重载的返回值类型和访问修饰符不能作为函数重载的区分标志。
2. 函数重写
函数重写是子类对父类中同名方法的重新定义,并且子类方法的访问修饰符不能低于父类方法的访问修饰符。
函数重写的实现方式如下:
定义一个子类,该子类继承至一个父类,子类定义了与父类中同名、同参数、同返回类型的方法,从而实现对父类中方法的重写。
例如:
父类:
public class Animal {
public void move(){
System.out.println("Animal can move");
}
}
子类:
public class Dog extends Animal {
public void move(){
System.out.println("Dog can walk and run");
}
}
上述代码中子类Dog中的move()方法重写了父类Animal中的move()方法。通过调用Dog类的move()方法,可以输出我们想要的结果。
需要注意的是,函数重写要求参数列表、返回类型及访问修饰符都必须与父类的方法相同,否则编译器将无法识别其为一个重写方法。
总结:
函数重载和函数重写是实现多态性的两种重要机制。它们在Java中得到了完整的实现。函数重载允许同一个类中定义多个同名方法,使得同一操作能够适应不同的情况,提高了代码的复用性和可读性;函数重写则是子类重新定义父类中同名方法的过程,主要用于重定义一个已存在的方法,使其符合子类的需要,提高了程序的可维护性和灵活性。
