我们可以在 Java 中重写 private 或 static 方法吗


不可以,我们无法在 Java 中重写 private 或 static 方法。

Java 中的 private 方法对其他类不可见,其作用域仅限于声明它们的类。

示例

让我们看看当尝试重写 private 方法时发生的情况 -

 实时演示

class Parent {
   private void display() {
      System.out.println("Super class");    
   }
}
public class Example extends Parent {
   void display() // trying to override display() {
      System.out.println("Sub class");
   }
   public static void main(String[] args) {
      Parent obj = new Example();
      obj.display();
   }
}

输出

输出如下 -

Example.java:17: error: display() has private access in Parent
obj.method();
      ^
1 error

该程序会引发一个编译时错误,表明 display() 在父类中具有 private 访问权限,因此无法在子类 Example 中被重写。

如果某个方法被声明为 static,则该方法是类的成员,而不是属于类的对象。该方法可以在不创建类对象的情况下调用。静态方法还可以访问类的静态数据成员。

示例

让我们看看当我们尝试在一个子类中重写一个 static 方法时发生的情况

 实时演示

class Parent {
   static void display() {
      System.out.println("Super class");    
   }
}
public class Example extends Parent {
   void display() // trying to override display() {
      System.out.println("Sub class");
   }
   public static void main(String[] args) {
      Parent obj = new Example();
      obj.display();
   }
}

输出

这会生成一个编译时错误。输出如下 -

Example.java:10: error: display() in Example cannot override display() in Parent
void display() // trying to override display()
    ^
overridden method is static
1 error

更新时间: 27-06-2020

超过 8000 次浏览

开启你的职业生涯

完成课程学习即可获得认证

开始学习
广告
© . All rights reserved.