没有主体的方法称为抽象方法。它仅包含带有半冒号和前面的抽象关键字的方法签名。
public abstract myMethod();
要使用抽象方法,您需要通过扩展其类并为其提供实现来继承它。
如果在类摘要中声明了一个方法以使用它,则必须在子类中重写此方法。但是,使用静态方法无法覆盖。因此,抽象方法不能是静态的。
如果您仍然尝试将静态抽象方法声明为静态,则会生成编译时错误,提示“修饰符的非法组合-抽象和静态”。
在下面的Java程序中,我们试图声明一个抽象方法static。
abstract class MyClass { public static 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(); } }
编译时,上面的程序生成以下错误。
AbstractClassExample.java:2: error: illegal combination of modifiers: abstract and static public static abstract void display(); ^ 1 error
同样,您不能覆盖Java中的final方法。
但是,在使用抽象的情况下,必须重写抽象方法才能使用它。
因此,不能在方法之前同时使用abstract和final。
如果仍然尝试将抽象方法声明为final,则会生成编译时错误,提示“修饰符的非法组合:abstract和final”。
在下面的Java程序中,我们试图声明一个抽象方法final。
public abstract class AbstractClassExample { public final abstract void display(); }
编译时,上面的程序生成以下错误。
AbstractClassExample.java:2: error: illegal combination of modifiers: abstract and final public final abstract void display(); ^ 1 error