Java中如何实现函数的重载与函数重写?
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中函数的重载和函数的重写都是面向对象编程中非常重要的技术,需要我们在实际的开发中灵活运用,以提高代码的可复用性和可维护性。
