1. 程式人生 > >java新知識系列 五

java新知識系列 五

抽象層 bstr 內容 類方法 釋放 什麽 不能訪問 捕獲異常 引用

  1. [] sleep和wait的區別有:
  2. [] 類方法和對象方法的使用限制
  3. []abstract修飾符的註意
  4. []
sleep和wait的區別有: 1,這兩個方法來自不同的類分別是Thread和Object 2,最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得敏感詞線程可以使用同步控制塊或者方法。 3,wait,notify和notifyAll只能在同步控制方法或者同步控制塊裏面使用,而sleep可以在 任何地方使用 synchronized(x){ x.notify() //或者wait() } 4,sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常 類方法和對象方法的使用限制 類方法通過@classmethod裝飾器實現,類方法和普通方法的區別是, 類方法只能訪問類變量,不能訪問實例變量 類方法是屬於整個類的,而實例方法是屬於類的某個對象的。 由於類方法是屬於整個類的,並不屬於類的哪個對象,所以類方法的方法體中不能有與類的對象有關的內容。即類方法體有如下限制: (1) 類方法中不能引用對象變量; (2) 類方法中不能調用類的對象方法; (3) 在類方法中不能使用super、this關鍵字。 (4)類方法不能被覆蓋。 如果違反這些限制,就會導致程序編譯錯誤。 與類方法相比,對象方法幾乎沒有什麽限制: (1) 對象方法中可以引用對象變量,也可以引用類變量; (2) 對象方法中可以調用類方法; (3) 對象方法中可以使用super、this關鍵字。 []abstract修飾符的註意 abstract修飾符用來修飾類和成員方法 1:用abstract修飾的類表示抽象類,抽象類位於繼承樹的抽象層,抽象類不能被實例化。 2:用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統具有什麽功能,但不提供具體的實現。 abstract 規則: 1:抽象類可以沒有抽象方法,但是有抽象方法的類必須定義為抽象類,如果一個子類繼承一個抽象類,子類沒有實現父類的所有抽象方法,那麽子類也要定義為抽象類,否則的話編譯會出錯的。 2:抽象類沒有構造方法,也沒有抽象靜態方法。但是可以有非抽象的構造方法。 3:抽象類不能被實例化,但是可以創建一個引用變量,類型是一個抽象類,並讓它引用非抽象類的子類的一個實例 。 4:不能用final 修飾符修飾。

java新知識系列 五