Java函数的重载和重写用法?
Java函数的重载和重写是Java语言中常用的两种方法,本文将详细介绍它们的用法。
重载(Overloading)
在Java中,函数重载是指在同一个类中,函数名相同但参数列表不同的多个函数。函数重载可以让我们根据需要使用不同的参数类型或参数个数来调用同一个函数。
在Java中进行函数重载,需要注意以下两点:
1.函数名必须相同。
2.参数列表必须不同。
下面是一个例子:
public class OverloadDemo {
public void test() {
System.out.println("test()");
}
public void test(int a) {
System.out.println("test(int a)");
}
public void test(int a, String b) {
System.out.println("test(int a, String b)");
}
public double test(double a) {
System.out.println("test(double a)");
return a*a;
}
}
在上面的例子中,我们定义了四个函数,它们的参数列表不同,但函数名均为test。这就是函数的重载。
现在我们可以调用 OverloadDemo 类中的这几个函数:
public static void main(String[] args) {
OverloadDemo od = new OverloadDemo();
od.test();
od.test(10);
od.test(10, "abc");
System.out.println(od.test(3.0));
}
输出结果:
test() test(int a) test(int a, String b) test(double a) 9.0
使用函数重载可以简化我们的代码,使代码更加简洁清晰。
注意:函数重载是根据函数的参数列表来区分不同的函数,因此函数的返回值类型和修饰符不会影响函数重载。
重写(Overriding)
重写是Java中的另一个常用方法。重写是指在子类中重新定义一个父类中已经定义的方法,方法名、参数类型及个数都要相同,而方法体的实现则可以不同。
下面是一个例子:
class Animal {
public void move(){
System.out.println("动物可以移动");
}
}
class Dog extends Animal{
public void move(){
System.out.println("狗可以跑和走");
}
public void bark(){
System.out.println("狗可以吠叫");
}
}
public class TestDog {
public static void main(String args[]) {
Animal a = new Animal(); // 创建一个 Animal 对象
Animal b = new Dog(); // 创建一个 Dog 对象,同时也是 Animal 对象
a.move(); // 执行 Animal 类的方法
b.move(); //执行 Dog 类的方法
//b.bark(); // 编译错误,因为 Animal 类中没有 bark() 方法
}
}
在上面的例子中,我们定义了两个类Animal和Dog。Dog继承了Animal类并重写了move()方法。在主方法中,我们创建了一个Animal对象和一个Dog对象,分别用它们的引用变量执行了move()方法。 运行结果为:
动物可以移动 狗可以跑和走
可以看到,b.move()调用的是Dog类中重写的move()方法。如果Dog类中没有重写move()方法,那么调用的将是Animal类中的move()方法。
重写非常有用,因为它使得子类可以通过继承来实现多态性。在我们上面的例子中,Dog类的对象即可以当做Dog类类型使用,也可以当做Animal类类型使用。
函数重载与重写区别
函数重载和重写是两个不同的概念:
重载是指定义相同名称但不同参数类型和个数的方法,编译器可以根据传入的参数自动匹配正确的方法实现。
重写是指在子类中定义一个与父类签名相同的方法,该方法会覆盖父类原有的方法实现。当子类对象被当做父类对象使用时,会调用子类重写的方法。
函数重载和重写的区别可以总结如下:
1.重载:方法名称相同,但参数列表不同,不需要继承关系。重载方法根据参数个数和类型的不同来区分不同的方法,参数列表越多的方法优先被调用。
2.重写:子类覆盖父类方法,方法名称相同、参数列表也相同,必须具有相同或者更小的访问权限,返回类型也必须兼容。
总结
在本文中,我们介绍了Java中函数的重载和重写的用法。函数的重载可以根据需要使用不同的参数类型或参数个数来调用同一个函数,从而简化代码的编写;重写可以在子类中重新定义一个父类中已经定义的方法,使得子类可以通过继承来实现多态性。
在实际开发中,我们需要灵活使用函数的重载和重写,以达到最佳的编程效果。
