abstract关键字与哪些关键字不能共存
1
).
private
:因为一个
abstract
方法需要被重写,所以不能修饰为
private
;
2
).
final
:因为一个
abstract
方法需要被重写。被
final
修饰的方法是不能被重写的,所以不能同
final
共存;
3
).
static
:因为一个
abstract
方法没有方法体。静态方法需要对方法体执行内容分配空间,所以不能同
static
共存;(
abstract
是没有实现的,不能产生对象,而是
static
是属于类的,类本身是已经存在的对象)。
abstract:用来声明抽象方法,抽象方法没有方法体,不能被直接调用,必须在子类overriding后才能使用。
static:用来声明静态方法,静态方法可以被类及其对象调用。
用static声明方法表明这个方法在不生成类的实例时可直接被类调用,而abstract方法不能被调用,两者矛盾。
4
).
synchronized
: 是同步的,然而同步需要具体的操作才能同步,但,
abstract
是只有声明没有实现的(即,使用
synchronized
关键字的是需要有具体的实现同步的操作的,但是使用
abstract
是只有声明而没有实现的,这样就产生了冲突)
synchronized:用于防止多个线程同时调用一个对象的该方法,与static连用可防止多个线程同时调用一个类的该方法。
从synchronized的功能也可以看出,用synchronized的前提是该方法可以被直接调用,显然和abstract连用。