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是可以覆蓋的,但是在調用時會調用編譯時類型的方法,因為調用的是父類的方法,
而父類的方法又是抽象的方法,又不能夠調用,所以上的修飾符不能放在一起。