淘先锋技术网

首页 1 2 3 4 5 6 7

Java中有两个概念:覆盖(Override)和遮盖(Hiding)。这两个概念经常被混淆,但它们实际上有着不同的含义。

覆盖是指子类重新定义了父类的方法,但保持了相同的签名。例如:

class A {
public void foo() {
System.out.println("A's foo");
}
}
class B extends A {
public void foo() {
System.out.println("B's foo");
}
}

在这个例子中,B覆盖了A的foo方法。当调用一个B对象的foo方法时,将输出“B's foo”,而不是“A's foo”。注意,覆盖只适用于非私有方法。

遮盖是指子类定义了一个和父类相同名称的变量,这将会隐藏父类的变量。例如:

class A {
public int x = 5;
}
class B extends A {
public int x = 10;
}

在这个例子中,B遮盖了A的x变量。当访问一个B对象的x变量时,将返回10,而不是原本的5。注意,遮盖适用于变量、静态方法和非静态方法。