抽象類中的抽象方法(其前有 abstract1修飾)不能用 private、 static、 synchronized、na
tive訪回修飾符修飾。原因如下:
- private
抽象方法沒有方法體,是用來被繼承的,所以不能用 private修飾;
2.static
static修飾的方法可以通過類名來訪間該方法(即該方法的方法體),抽象方法用sttic修飾沒有意義; - synchronized
該關鍵字是爲該方法加一個鎖。而如果該關鍵字修飾的方法是 static方法。則使用的鎖就是class變量的鎖。如果是修飾類方法。則用this變量鎖。
但是抽象類不能實例化對象,因爲該方法不是在該抽象類中實現的。是在其子類實現的。所以,鎖應該歸其子類所有。所以,抽象方法也就不能用 synchronized關鍵字修飾了; - native
native這個東西本身就和 abstract衝突,他們都是方法的聲明,只是一個把方法實現移交給子類,另一個是移交給本地操作系統。如果同時出現,就相當於即把實現移交給子類,又把實現移交給本地操作系統,那到底誰來實現具體方法呢
終於說到了接口!
接口是一種特殊的抽象類,接口中的方法全部是抽象方法(但其前的 abstract可以省略),所以抽象類中的抽象方法不能用的訪間修飾符這裏也不能用。同時額外說明一下protect關鍵詞
4. protect
protected訪同修飾符也不能使用,因爲接口可以讓所有的類去實現(非繼承),不只是其子類,但是要用public去修飾。接口可以去繼承一個已有的接口。
.所有方法:
- getClass()
- hashCode()
- equals()
- toString()
- clone()
- wait()…
- notify()
- notifyAll()
- finalize()