abstract 的 method 是否可同时是 static,是否可同时是 native,是否可同时是 synchronized?
参考解答
都不能
修饰符的含义:
abstract:用来声明抽象方法,抽象方法没有方法体,必须由子类或实现类override,并有具体实例对象后,才能使用
static:用来声明静态方法,静态方法可以被类及其对象调用
native:用来声明本地方法,该方法的实现由非java 语言实现,比如c。一般用于java与外环境交互,或与操作系统交互
synchronized:用来实现线程同步,其实是synchronized(this) 或synchronized(class)的简化写法,暗示也必须有方法实现
不能一起使用的理由:
static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法只能由实例对象调用,矛盾。
native 暗示这些方法是有实现体的,只不过这些实现体是非java的,但是abstract却显然的指明这些方法无实现体,矛盾
从synchronized的功能也可以看出,用synchronized的前提是该方法也需要有实现,矛盾