1. 程式人生 > >面試題收集-abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?

面試題收集-abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?

1、abstract是抽象的,指的是方法只有宣告而沒有實現,他的實現要放入宣告該類的子類中實現。

2、static是靜態的,是一種屬於類而不屬於物件的方法或者屬性


3、synchronized 是同步,是一種相對執行緒的鎖。


4、native 本地方法,這種方法和抽象方法及其類似,它也只有方法宣告,沒有方法實現,但是它與抽象方法不同的是,它把具體實現移交給了本地系統的函式庫,而沒有通過虛擬機器,可以說是Java與其它語言通訊的一種機制。

5、那麼我們就來談談這些關鍵字為什麼不能和abstract混用。

首先abstract與static,宣告static說明可以直接用類名呼叫該方法;

宣告abstract說明需要子類重寫該方法;
如果同時宣告static和abstract,用類名呼叫一個抽象方法肯定不行。


synchronized 是同步,然而同步是需要有具體操作才能同步的,如果像abstract只有方法宣告,那同步一些什麼東西就會成為一個問題了,當然抽象方法在被子類繼承以後,可以新增同步。
native,這個東西本身就和abstract衝突,他們都是方法的宣告,只是一個吧方法實現移交給子類,另一個是移交給本地作業系統。如果同時出現,就相當於即把實現移交給子類,又把實現移交給本地作業系統,那到底誰來實現具體方法呢!

不能放在一起的修飾符:final和abstract,private和abstract,static和abstract,因為abstract修飾的方法是必須在其子類中

實現(覆蓋),才能以多型方式呼叫,以上修飾符在修飾方法時期子類都覆蓋不了這個方法,final是不可以覆蓋,private是不能

夠繼承到子類,所以也就不能覆蓋,static是可以覆蓋的,但是在呼叫時會呼叫編譯時型別的方法,因為呼叫的是父類的方法,

而父類的方法又是抽象的方法,又不能夠呼叫,所以上的修飾符不能放在一起。