当先锋百科网

首页 1 2 3 4 5 6 7

Java中有两个非常重要的概念,即覆写(overriding)和重写(overloading)。这两个概念虽然名字很相似,但是它们在Java程序中的作用以及实现方式却是不同的。

覆写是指子类对父类中的某个方法进行重写,使得子类中的方法覆盖掉了父类中的同名方法。覆写通过继承实现,是实现多态的基础。

// 父类A
public class A {
public void method() {
System.out.println("父类A的方法");
}
}
// 子类B
public class B extends A {
@Override
public void method() {
System.out.println("子类B覆写父类A的方法");
}
}
// 测试
A a = new B();
a.method(); // 输出:子类B覆写父类A的方法

在上面的例子中,子类B重写(使用@Override注解修饰)了父类A中的method()方法。当我们创建了B的对象并调用它的method()方法时,会输出子类B覆写后的内容,而不是父类A的内容。

而重载(overloading)则是指在一个类中定义多个同名的方法,但它们的参数列表不同。当我们调用这个方法时,Java会根据调用的参数列表来决定具体调用哪个方法。重载和覆盖的实现方式不同,重载是通过方法签名来进行区分的。

public class C {
public void method(int a) {
System.out.println("方法1:" + a);
}
public void method(double a) {
System.out.println("方法2:" + a);
}
public void method(String a) {
System.out.println("方法3:" + a);
}
}
C c = new C();
c.method(1); // 输出:方法1:1
c.method(1.0); // 输出:方法2:1.0
c.method("1"); // 输出:方法3:1

在上面的例子中,我们定义了三个名为method()的方法,它们的参数列表分别是int、double、String。当我们调用这个方法时,Java会根据调用的参数类型来选择具体调用哪个方法。

在Java中,覆盖和重载是很重要的概念,它们在不同场合下都扮演着不同的角色。程序员需要了解它们的不同之处,并在实际编程中正确地使用它们。