应几个法国巴西和印度小程序员的邀请,

我每周在Facebook上发布Java系列小文章,与你们也共享一下。

翻译 | 王楷涵

Java Essay Serials 1 - Java Basics - 24_Java

一个抽象方法能被static、native、synchronized修饰吗?

        一个抽象方法不能被static、native、synchronized修饰。

        关键字static表示这个方法能直接被调用,即使没有一个实例,但是关键字abstract表示这个方法必须被其他方法重写而调用。语义是相反的,这也是为什么static不能和abstract兼容。

        如果我们试图将它们放在一起,例如:public abstract static void demo();

        随后将提示一个错误:

The abstract method demo in type TestClass can only set a visibility modifier, one of public or protected.

        这表明了abstract只能和可见修饰符一起工作。如果我们试图将native和abstract放在一起,我们将遇到同样的错误。因为关键字native提示可以调用方法,只是它用其他语言实现。其语义和abstract相比也是对立的。

        关键字`synchronized阻止方法同时输入两个或多个线程,由于“输入方法”的前提条件是方法可以被调用,因此与抽象的语义冲突。