在 Java 中,私有方法(private method)不能被重载(overloaded)或重写(overridden)。
重载(Overloading):重载是在同一个类中定义多个具有相同名称但参数列表不同的方法。由于私有方法只能在其所在的类中被访问,因此它们不能被子类重载。
重写(Overriding):重写是在子类中重新定义父类中的方法,以实现不同的功能。由于私有方法不能被子类访问,因此它们不能被子类重写。
以下是一个示例,说明私有方法不能被重载或重写:
```java
class Parent {
private void foo() {
System.out.println("Parent's foo");
}
}
class Child extends Parent {
// 尝试重写父类的私有方法
private void foo() {
System.out.println("Child's foo");
}
public void callFoo() {
foo(); // 调用子类的 foo 方法
}
}
public class Main {
public static void main(String[] args) {
Child child = new Child();
child.callFoo(); // 输出 "Child's foo"
}
}
```
在这个示例中,`Child` 类尝试重写父类 `Parent` 的私有方法 `foo()`。然而,由于私有方法不能被子类访问,因此 `Child` 类实际上定义了一个新的私有方法 `foo()`,而不是重写父类的方法。当我们通过子类对象调用 `foo()` 方法时,它会执行子类中的 `foo()` 方法,而不是父类中的方法。这说明私有方法不能被重载或重写。