在Java中,我们可以声明抽象方法为私有、受保护、公有或默认吗?


没有方法体的方法称为抽象方法。它只包含方法签名和一个分号,以及在其前面一个抽象关键字。

public abstract myMethod();

要使用抽象方法,您需要通过扩展其类来继承它,并为其提供实现。

声明私有抽象方法

如果一个类的某个方法是私有的,则您无法在当前类之外访问它,甚至无法从它的子类访问它。

但是,对于抽象方法,您无法在同一个类中使用它,您需要从子类中覆盖它并使用它。

因此,抽象方法不能是私有的。

如果您仍然尝试将抽象方法声明为final,则会生成一个编译时错误,提示“修饰符的非法组合 - abstract 和 private”。

示例

在以下 Java 程序中,我们尝试声明一个私有抽象方法。

abstract class AbstractClassExample {
   private static abstract void display();
}

编译时错误

编译时,上述程序会生成以下错误。

AbstractClassExample.java:2: error: illegal combination of modifiers: abstract and private
   private static abstract void display();
                              ^
1 error

声明受保护的抽象方法

是的,您可以声明受保护的抽象方法。如果您这样做,则可以从同一包中的类或其子类中访问它。

(并且您必须从子类中覆盖抽象方法并调用它。)

示例

在以下 Java 程序中,我们尝试声明一个受保护的抽象方法。

 在线演示

abstract class MyClass {
   protected abstract void display();
}
public class AbstractClassExample extends MyClass{
   public void display() {
      System.out.println("This is the subclass implementation of the display method ");
   }
   public static void main(String args[]) {
      new AbstractClassExample().display();
   }
}

输出

This is the subclass implementation of the display method

更新于: 2020年6月29日

10K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告