sun認證備考學習筆記系列–聲明和存取控制(2)

來源:互聯網
上載者:User

介面實現

        介面是類能夠做什麼的合約,但它們沒有指定類操作的實現方式!

        介面能夠被繼承樹中的任何類實現

        介面就像一個百分百抽象類別,無論是否對其在聲明中使用了abstract修飾符,它隱含是抽象的

        介面只能有抽象方法,不允許有具體方法

        介面預設是公用的和抽象的,這些修飾符的顯式聲明是可選的

        介面可以有常量,它們隱含是                public,static和final

        public,static和final介面常量聲明可以選擇任意組合

        合法的非抽象實作類別具有以下屬性:

            它為來自介面的所有方法提供具體實現

            對於它實現的方法,必須符合所有的合法重寫規則

            它一定不能為實現方法聲明任何新的檢查異常

            它一定不能聲明比介面方法中所聲明異常更寬的檢查異常

            無論介面聲明如何,它都可以在任何介面方法實現上聲明運行時異常

            它必須包含與它所實現方法完全相同的方法簽名和傳回型別(但不必聲明該介面的異常)

        實現介面的類自身可以是抽象的

        抽象實作類別不必實現介面方法(但是第一個具體子類必須實現)

        類只能擴充一個類,但是它能實現多個介面

        介面能夠擴充一個或多個其他介面

        介面不能擴充類,或實現一個類或介面

        

成員存取修飾詞

        方法和執行個體變數(非局部)稱為“成員”

        成員可以使用四個存取層級:public ,private,protected和預設

        成員訪問有兩種形式:

            類中的代碼能夠訪問另一個類中的成員

            子類能夠繼承其超類中的成員

        如果不能訪問類則不能訪問其成員

        要在確定成員可見度之前確定類可見度

        公用成員能夠被其他所有類訪問,甚至是不同包中的類

         如果超類成員是公用的,那麼無論在哪個包中,子類都繼承它

        不用.運算子訪問的成員必須在同一個類中

         this.總是只想當前執行的對象

        this.aMethod與只調用 aMothod完全相同

         私人成員只能被同一個類中的代碼訪問

        私人成員對子類是不可見的,因此不能繼承私人成員

        預設和保護成員的區別只是在子類被調用時;

            預設成員只能被處於同一個包中的其它類訪問

            保護成員能夠被同一包中的其他類訪問,也能被任意包中的子類訪問

            保護=包+子孫

            對於包外子類,只能通過繼承訪問保護成員;包外子類不能通過使用對超類執行個體的引用來訪問保護成員;

            實際上,子類從其他包繼承的保護成員對其他類來說都是私人的

            

局部變數

        局部變數聲明不能有存取修飾詞

        final是唯一可用與局部變數的存取修飾詞

        局部變數沒有預設值,因此在使用之前必須將其初始化

 

其他修飾符--成員

        final方法在子類中不能重寫

        abstract方法用分號結束,而不是大括弧

        有三種方法識別非抽象方法

            該方法沒有標示為abstract

            該方法有大括弧

            該方法在兩個大括弧之前有代碼

        擴充abstract的第一個非抽象類別必須實現所有abstract類的abstract方法

        synchronized修飾符只能用於方法和代碼塊

         synchronized方法能夠具有任何存取控制,包括final

        抽象方法必須被子類實現,基於這種原因,所以:

            abstract方法不能是私人的

            abstract方法不能是final

        native修飾符只能應用與方法

        strictfp修飾符只能應用與類和方法

 

具有var-arg的方法

        從JAVA5開始,方法可以聲明一個接受零個或多個的形數,即所謂的var-arg方法

        var-arg是用文法type...name聲明的,例如doStuff(int...x){}

        var-arg方法只能帶一個var-arg形參

        在帶有正常形參和一個var-arg形參的方法中,var-arg形參必須出現在最後面

        

變數聲明

        執行個體變數能夠--

            具有任何存取控制

            被標示為final或transient

        執行個體變數不能被標示為abstract,synchronized,native和strictfp

        用與執行個體變數系那個痛的名稱聲明局部變數是合法的,這被稱作“隱藏”

        最終變數具有以下屬性:

            一旦賦值之後,最終變數不能被重新初始化

            一旦將對象賦予最終變數,則最終引用變數不能再引用不同的變數

            在建構函式完成前,最終變數必須完成初始化

        根本沒有final對象這種說法,標示為final的引用不是指該對象自身是不可變的

        transient修飾符只能用於執行個體變數

        volatile修飾符只能用與執行個體變數!

        

        

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.