Java物件導向學習

來源:互聯網
上載者:User

在一個檔案中可以定義數個類,但只能有一個類被設定為public,檔案名稱主檔案名必須與這個public的類同名。

在定義類時,有一個基本原則是:信最小化公開。就是盡量通過方法來操作對象,而不直接存取對象內部的域成員。

靜態方法中沒有this參考名稱。

Java在使用到類時才會載入類至程式中。如果在載入類時,希望先執行一些類的初始化動作,可以使用static定義一個靜態區塊,並在當中編寫載入時的初始化動作。

傳回值類型不可用做方法重載的區別根據。

編譯器在處理重載方法、裝箱問題和不定長度參數時,會一句下面的順序尋找符合的方法:

    1. 尋找在還沒有裝箱動作前可以符合參數個數與類型的方法

    2. 嘗試裝箱動作後可以符合參數個數與類型的方法

    3. 嘗試設有不定長度參數並可以符合的方法

    4. 編譯器找不到合適的方法,報告編譯器錯誤

不定長度參數: 

    publc class mathtool

    {

        public static int sum(int ...  nums)

        {

            int  sum=0;

            for(int num :nums)

            {

                sum += sum;

            }

            return sum;

        }

    }

    實際上nums是一個數組。(即int[] nums)

    在方法上使用不定長度參數時,記得必須聲明參數必須設定在參數行的最後一個。

    例如:

             public  void someMethod(int arg1 , int  arg2 , int...  vargs);

            public  void someMethod(int...  vargs,int arg1,int arg2);        //不合法

    無法使用兩個以上不定長度參數。

 

垃圾收集: 

    在Java中並沒有解構函式,但有finalize()方法,它被聲明為protected,finalize()會在對象被回收時執行,但不可以將它當做解構函式使用,因為不知道對象資源何時被回收。

    如果確定不再使用某個對象,可以在參考至對象的名稱上指定null,表示這個名稱不再參考至任何對象。不被任何名稱參考的對象會被回收資源。

    可以使用System.gc()建議程式進行垃圾收集,如果建議被採納,則對象資源會被回收,回收前會執行finalize()方法。

 

繼承 

    在Java中,所有的類都直接或間接地繼承了java.lang.Object類。 

    在擴充某個類之後,可以一併初始化父類的建構函式,已完成響應的初始化動作,這可以使用super()方法來達到,它表示調用基底類的建構函式。super()必須再建構函式一開始就調用,在子類的建構函式中,如果不用super()指定使用父類中的哪個建構函式來初始,則預設會調用父類中無參數的建構函式。 

 

重寫方法 

     可以使用super()方法在衍生類別中調用基類的建構函式,使用super.methodName()調用父類的方法。

      重寫方法時需要注意的是,可以增大父類中的方法許可權,但不可以縮寫父類中的方法許可權。也就是若原來成員時public,不可以在父類中重寫它為private或protected。

 

Object類 

        在Java中,每個類都直接或間接繼承自Object類。

        Object類定義了幾個方法,包括protected許可權的clone()、finalize()以及public許可權的equals()、toString()、hashCode()、notify()、notifyAll()、wait()、getClass()等。除了getClass()、notify()、notifyAll()、wait()等方法之外其他都可以在繼承後加以重寫,因為這些方法都被聲明為final,無法重寫。

    

 

方法

說明

toString()

對對象的文字描述

getClass()

返回對象於執行期間的Class執行個體

getName()

取得類名稱

hashCode()

返回改物件的雜湊碼(Hash  Code)

equals()

比較對象的記憶體位址是否相同

Clone()

複製對象本身

        要支援複製自身的對象,定義類時必須實現Cloneable介面。如果不實現這個介面的類,其執行個體的clone()方法被調用時,會出現CloneNotSupportedException異常。Java中的Clone()方法是繼承自Object,為了方便直接調用,將其存取許可權從protected改為public。

        如:

                public  class  Table  implements  Cloneable       //要實現Cloneable

                {

                    ...

                    public  Object  clone()  throws  CloneNotSupportedException

                    {

                        Table  table = (Table) super.clone();            //調用父類的clone()來複製

                    }

                    ...

                }

        改變複製對象的內容,對原來內容不會有影響。

 

final關鍵詞 

        final關鍵詞可以使用在變數聲明時,表示改變數一旦設定之後,就不可以再改變改變數的值。

        如:

            final  double  PI = 3.14159;

            public  final  double  getRadius() {....}

        如果在定義方法成員時使用final,則表示該方法成員無法再被子類重寫。

 

多態

        多態實現指的是使用同一個實現介面,以實現不同的對象執行個體。多態實現在物件導向上是為了降低對實現介面的依賴程度,進而增加程式架構的彈性與可維護性。

        要實現對象上的方法必須使用對應類型的實現介面,而如果使用不正確的類型來轉換對象的實現介面,則會發生java.lang.ClassCastException異常。

 

    抽象類別:

            在Java中定義類時,可以僅聲明方法名稱而不操作其中的邏輯,這樣的方法稱為抽象方法。如果一個類中包括了抽象方法,則該類稱為抽象類別。抽象類別是擁有未實現方法的類,所以它不能被用來產生對象,它只能被繼承擴充,並於繼承後實現未完成的抽象方法。在Java中聲明抽象方法與抽象類別,要使用abstract關鍵詞。

 

    介面:

            實現某介面的類並不屬於某一個類,一個對象上可以實現多個介面。

            介面的目的在於定義一組可實現的方法,實現介面的類必須實現該介面所定義的所有方法。只要對象有實現某個介面,就可以通過該介面來實現對象上對應的方法。

            介面的聲明時使用interface關鍵詞,生命方式如下:

                [public]  interface  介面名稱

                {

                    使用權限設定  傳回型別  方法(參數列);

                    。。。

                }

                在聲明介面時方法上的使用權限設定如果省略的話,預設的是public。

                在定義類時,可以使用implements關鍵詞來指定要實現哪個介面,介面中所有定義的方法都要實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.