JAVA 物件導向

來源:互聯網
上載者:User

標籤:程式員   執行者   指揮者   java   

1;什麼叫物件導向:1;物件導向和面向過程是一種思想

                                 2;面向過程:強調的是功能行為

                                 3;物件導向:將功能進行封裝,強調具備了功能的對象

2;物件導向的特徵:1;封裝         2;繼承         3;多態

3;物件導向的特點:可以將複雜的事情簡單化

                                 將程式員從執行者變為指揮者

4;類:生活中一般描述事物的行為和屬性

   JAVA中用類來描述事物:

    1;屬性:對應類中的成員變數

    2;行為:對應類中的方法

       類是對生活的一種描述

      對象是對生活中事物的描述,實實在在的個體

在JAVA中通過new操作符來完成

   例如:Car  car=new Car();

    //其實就是在堆記憶體產生的實體

   //Car就是一個類類型變數,類類型變數指向對象

        Car.run();

     Car car2=new Car();

5;資訊隱藏:private----私人:可用與修飾成員變數和成員方法,只能在本類中有效

6;封裝:1;通過資料封裝,聲明為私人

                2;提供一個或多個公開的(public)的方法

7;封裝的好處:1;隱藏了一個類的實現細節

                          2;方便控制:限制對屬性的不合理操作

                          3;便於修改:增加代碼的可維護性

8;執行個體變數和局部變數

                執行個體變數==成員變數

          1;1,成員變數定義在類中

                2,局部變數定義在方法中,參數上,語句中

          2;成員變數在類中有效

               局部變數只在所屬的大括弧內生效,出了則無效

          3;成員變數存在工作中,隨著對象的消失而消失

                局部變數存在於棧中,隨著所屬區別的運行而存在,結束而釋放

9;建構函式:

       1;建構函式沒有傳回值

       2;建構函式的函數名和類名相同

       3;給對象初始化資料

  注意:一個類在定義時,如果定義建構函式時,已有,則就沒有預設的建構函式

10;建構函式和一般函數的區別

   1;格式不同(函數名,傳回型別,傳回值)

   2;建構函式在對象建立時,就被調用,只調用一次;

        一般函數在對象建立後,才被調用,可被調用多次

  注意:建立一個對象在記憶體中做了什麼事情:

       1;先將Person.class檔案載入到記憶體中

       2;執行main()方法,在棧中開闢空間,然後main方法的棧區分配一個變數Person

       3;在堆中開闢一個實體空間,分配了記憶體位址(new)

       4;在該實體空間中進行屬性空間分配,並進行預設初始化

       5;調用該實體的建構函式,進行建構函式初始化

       6;將記憶體中的地址調用在方法的參數,進行傳值

11;This   關鍵字

       1;this:代表對象,就是所在函數所屬對象的引用

       2;什麼時候同this?

         答:在定義功能時,如果該功能內部使用到了調用該功能的對象,這時就用this來表示對象

       3;調用格式:this,this對象後面跟.調用的是成員屬性和方法

                                       this對象後面跟()調用的是本類中的構造方法

        注意:this調用函數,必須定義在建構函式的第一行

                  因為建構函式是用於初始化,所以初始化動作一定會執行,否則編譯錯誤

         static  關鍵字:是一個修飾符,用於修飾成員(成員變數和成員方法)

         特點:

                    1;想要實現對象的中共性資料的對象共用,可以將這個資料進行靜態修飾

                    2;被修飾的成員,可以被類名所調用.類名.靜態成員

                    3;靜態隨著類的載入而載入,而且優先於對象的存在

         弊端: 

                    1;有些資料對象是特有的資料,是不可以被靜態修飾,如果修飾這樣的資料,那這個資料會變成共用資料,對事物描述就出了問題

                    2;靜態方法,只有訪問靜態成員,不能訪問非靜態成員

                    3;靜態方法中,不能使用this和super關鍵字

12;靜態變數和成員變數的區別

       1;靜態變數所屬於類,也稱為類變數

       2;成員變數所屬於對象,也稱為執行個體變數

       靜態變數存在於方法區

       成員變數存在於堆中

 靜態變數隨著類的載入而存在,隨著類的消失而消失

 成員變數隨著對象的建立而存在,隨著對象回收而消失

靜態變數可以被對象和類名調用

結論:成員變數可以稱為對象的特有資料

           靜態變數可以稱為對象的共用資料

靜態代碼塊:

   static{

   System.out.print();

 }

   toString(){

   return "student[id="+id+",name="+name+"]"

}

作用:1;可以完成類的初始化,靜態代碼塊隨著類的載入而執行,而且只執行一次(new 多個對象,只執行一次)

          2;如果和主函數在同一個類中,優先主函數執行

13;設計模式:1;建立型模式

                         2;結構型模式

                         3;行為型模式

          單例模式:保證一個類在記憶體中的對象唯一性

             如何保證對象的唯一性?

              1;不讓其他程式建立該類對象

              2;本類中建立一個本類對象

              3;對外提供方法,讓其他程式獲得這個對象

 步驟:

  1;因為建立對象都需要建構函式初始化,只有將本類中的建構函式私人化,其他程式就無法建立該類對象

  2;在本類建立一個對象

   1;private   Single(){

}

        private static Single s=new Single();

        public static Single GetInstance(){


}


 2;private     Single(){

}

       public static Single2 s=null;

       private static Single2 GetInstance(){

              if(s==null){

               s=new Single2();

}

         return s;

}

14;繼承:-----Animal  extends  Object

        繼承的好處:提高代碼的複用性

父類由來:其實由多個類不斷向上提取的共性內容而來

實現繼承的類為子類,被繼承的是父類(基類)

文法格式:修飾符   class  子類名   extends   父類名

  extends 是繼承的關鍵字,是擴充的意思

方法重寫:三同一小一大

                 三同:方法名,形參列表相同,傳回值相同

                 一小:子類方法聲明拋出的異常類應該比父類方法的聲明拋出的異常類更小或相同

                 一大:子類方法的存取權限應該比父類方法的許可權更大或相同

15;super關鍵字:子類出現後,類中的成員有了哪些特點?

                             1;成員變數:當子類出現一樣屬性的時候,子類類型的對象調用該屬性,值是子類的屬性值

                               System.out.println(this.birName+"只在地上跑");

                               System.out.println(super.birName+"只在地上跑");

                               this:代表本類類型的對象引用

                               super:代表子類所屬父類中的記憶體空間引用

          如果想要調用父類的屬性,需要super這個關鍵字

                             2;建構函式:發現子類的建構函式運行時,先運行了父類的建構函式

          子類的所有建構函式中的第一行,其實都有一條隱藏的語句super();

                             3;成員函數:當子類父類出現了一樣的方法時,子類對象會運行子類的方法,父類的方法會被覆蓋(重寫)
          如果需要調用父類的方法,需要super.bird();

 JAVA中類只允許單一繼承

 多重繼承:A繼承B,B繼承C,C繼承D

16;方法重載:1;什麼叫做重載:用於定義一組方法,這些方法具有相同的名稱,執行類式的操作,但是卻使用不同的方法、

                         2;重載的三大原則:方法名相同

                                                          參數不同:數量不同,類型不同,順序不同

                                                          同一範圍

             提示:方法重載與傳回值類型沒有任何關係

       1;成員方法重載

       2;建構函式重載

17;final  關鍵字

         final 修飾成員屬性,這個屬性就變為常量,不可變,必須賦初始值

         final 修飾方法,這個方法不能重寫

         final 修飾類,這個類不能被繼承,該類中的所有方法和屬性都是final

18;類之間的關係:依賴(use-a)   繼承(is-a)   彙總(has-a)

19;抽象類別:抽象類別不能被執行個體化

       抽象方法:只需聲明,不需實現

       抽象關鍵字:abstract

       如果這個方法是一個抽象方法,那麼這個類一定是抽象類別

       抽象類別可以包含普通成員(變數和方法)

       子類必須重寫父類的抽象方法,如果不重寫那麼這個類也是抽象類別

       抽象類別有建構函式,用與初始化

       抽象類別abstract關鍵字與哪些不能共用:private  final  static

       抽象類別中不一定包含抽象方法

20;abstract   特點:

      1;抽象方法只能定義在抽象類別,抽象類別和抽象方法必須由abstract關鍵字修飾(方法,類,不能修飾變數)

      2;抽象方法只定義方法聲明,並不定義方法實踐(只有方法名,沒有方法體)

      3;抽象類別不能被執行個體(不能建立對象)

      4;子類繼承抽象類別,必須重寫父類的抽象方法,如果沒有重寫,那也是一個抽象類別,如果不是抽象類別,那麼編譯不通過

      5;abstract關鍵字不能和final,private,static

附件:ctrl+shift+r-----尋找檔案

           ctrl+t-----查看類結構

           ctrl+單擊------找到檔案

           ctrl+c-----複製

    介面:是抽象方法和常量值的定義的集合

                 interface  關鍵字

                 DAO------Data Access Objects的第一個介面

    介面裡面只能包含靜態常量,不能包含普通的變數

      修飾符必須是public

    介面裡面的方法都是抽象方法(只有方法名,沒有方法體,而且abstract關鍵字可以省略),不能包含普通方法

    實作類別必須重寫介面的抽象方法

    繼承------extends     實現------implements

    一個類實現多個介面,一個介面可以繼承多個介面

    一個類在繼承另一個類的同時,還可以實現多個介面

   介面用於設計上,特點:

            1;介面是對外提供的規則

            2;介面是功能的擴充

            3;介面的出現降低了耦合性

21;多態:同一函數,多種形態

            <對象   instanceof   類型>

       什麼叫做多態:同一函數,多種形態

       函數本身就是具備多態性,某一中事情有不同的具體的體現

       多態的前提:1;必須要有關係(繼承和實現)

                            2;會有方法覆蓋(重寫)

       體現:父類引用或者介面的引用,指向自己的子類對象   

       好處:提高程式的擴充性

       弊端:當父類引用指向子類對象時,但是只能訪問父類的方法,不能訪問子類中特有的方法

22;異常:程式中出現的錯誤

            1;編譯時間異常

            2;運行時異常

    運行時異常包括:運行錯誤,邏輯錯誤

     try{-----------}  監視可以發生異常的代碼部分

     catch(異常類型  e){-----------}

    1;Exception:異常階層的根類

    2;ArithmeticException:算術異常

    3;ArrayIndexOutofBoundException:數組下標越界

    4;NullPointerException:訪問Null 參考

    5;NumberFormatException:字串轉換數字失敗

    6;IOException:IO異常的根類

       finally   不論是否發生異常,都會執行

     不論有多少個catch,都會執行一個

     throw  new   Exception("------------");

       e.getMessage();

    運行時異常,不需要強制     try{-----}catch(異常類型 e){------}



本文出自 “10281529” 部落格,請務必保留此出處http://10291529.blog.51cto.com/10281529/1659531

JAVA     物件導向

相關文章

聯繫我們

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