abstract 的method 是否可同時是static,是否可同時是native,是否可同時是synchronized? 【基礎】
阿新 • • 發佈:2019-01-30
1、abstract與static
(what)
abstract:用來宣告抽象方法,抽象方法沒有方法體,不能被直接呼叫,必須在子類overriding後才能使用
static:用來宣告靜態方法,靜態方法可以被類及其物件呼叫
(how)
static與abstract不能同時使用
(why)
用static宣告方法表明這個方法在不生成類的例項時可直接被類呼叫,而abstract方法不能被呼叫,兩者矛盾。
2、abstract與native
(what)
native:用來宣告本地方法,該方法的實現由非java
(how)
native可以與所有其它的java識別符號連用,但是abstract除外。
(why)
因為native暗示這些方法是有實現體的,只不過這些實現體
是非java的,但是abstract卻顯然的指明這些方法無實現體。
3、abstract與synchronized
(what)
synchronized:用於防止多個執行緒同時呼叫一個物件的該方法,與static連用可防止多個執行緒同時呼叫一個類的該方法
(how)
abstract與synchronized不能同時使用
(why)
從synchronized的功能也可以看出,用synchronized的前提是該方法可以被直接呼叫,顯然和abstract連用