JAVA面向對象筆記

類class
    將一類事物的特徵和動做,封裝爲屬性和方法(封裝相關數據,方法代碼);
封裝  
    實例,一個具體的個體(new建立)
    能夠保存獨立的數據,獨立控制執行指定方法;
引用
    保存一個實例的地址
    引用特殊值null
    局部代碼塊:
        在方法中提供一個{}.
        局部代碼塊能夠提升棧內存的效率,能夠提早釋放局部的變量內存。
    構造方法
        構造代碼塊:會在每一次建立對象時調用,構造代碼塊是先與構造方法執行的
        使用方式:直接在類中提供一個{}
        新建實例時執行,子類調用父類的無參構造方法
        class定義類必需要有構造方法
        不定義,默認爲無參
        構造方法做用:任意
        經常使用方法:賦值

    this 
        1.this.屬性名---本類裏的成員變量,當變量名重複時使用
        2.this.方法名------本類的方法名
        3.This(……)----本類裏的構造方法,減小代碼重複
            This()只能用在構造方法中的第一行

    Overload 方法重載:一個方法有多種參數傳遞方式
        同名不一樣參數,

繼承:
    把原有類中的公共的代碼抽取到一個新類中,原有類和新類使用extends關鍵字進行聯。新類稱之爲父類,原有類稱之爲子類,子類會繼承父類的全部屬性和方法。可是子類只能使用對子類可見的屬性和方法。
    JAVA只支持單繼承,只能繼承一個父類,一個父類能夠有多個子類

    不繼承父類的部分
        構造方法
        私有成員 private
    子類實例
        由父類實例和子類實例綁定,總體做爲一個實例
        調用時,先找子類,再找父類
    Overried 方法重寫:在父子類中出現了方法簽名一致的非靜態方法,就稱之爲重寫(Override),或者稱之爲覆蓋
        子類調用父類方法時,父類方法不知足子類的需求,須要重寫,
        必須與父類的返回值與參數一致;
        兩同:方法名,參數列表相同
        返回值異常兩小:
            1.返回值:
              若是返回值爲基本數據類型,子類的返回值必須和父類相同
              若是返回類型爲引用數據類型,子類返回值小於等於父類;
            2.異常:
            子類向上拋出的異常 要小於等於父類;
        一大:
            訪問修飾符權限;public >protected>default>privade>
            子類的訪問修飾符權限必須大於等於父類;
    Super
        super關鍵字能夠調用父類可見的方法和屬性
        super()和this()不能共存
        1.super.屬性名-----父類裏面的成員變量
        2.super.方法名---父類的方法名
        3.super()/super(參數) ----調用父類的無參構造/可見方法
            Super()只能出如今構造方法體第一句
            每個類的構造方法有默認的super();

多態:事物的多種形態
    //編譯看左邊,運行看右邊:
    編譯時多態:方法重載
    運行時多態:向上造型,方法重寫
    一致的類型,全部子類型實例,均可以被當作一致的父類型來處理
    向上轉型:
        定義一個父類的變量,用以引用子類的地址空間
        只能調用父類中定義的方法
    向下轉型:
        強制轉換,須要保證轉型的安全
        Instanceof 判斷運行期的類型
        對真實類型及其父類型判斷,都獲得true

抽象類abstract
    半成品的類,一個未完成的類
    抽象方法只有方法定義,沒有方法代碼
    須要用abstract關鍵詞定義
        1.做爲通用方法在父類中定義;
        2.要求子類必須完成該方法;
        3.抽象類不能實例化,未完成時半成品;具體子類能夠建立實例;

    抽象要點
        被abstract修飾的類稱之爲抽象類,被abstract修飾的方法稱之爲抽象方法
        一個類中若是有抽象方法,這個類必須爲抽象類
        抽象類不能實例化!!!
        抽象類必需要有一個子類,子類能夠實現抽象類中的抽象方法.若是子類實現類的抽象方法,那麼久能夠經過向上造型來使用抽象類.
        final不能修飾抽象類,final修飾的類爲最終類不能被繼承,抽象類必需要被繼承
        抽象類能夠寫構造方法的
        抽象類能夠提供普通方法
        抽象類中的抽象方法能夠重載
        抽象類中抽象方法不能使用private修飾,抽象方法必須被子類實現
        抽象方法不能被static修飾,靜態方法能夠直接使用類名調用,在抽象類中沒有意義.
        受java的單繼承的影響,抽象類不可以同時繼承多個類

接口interface
    接口是功能的集合,接口是比抽象類更抽象的"類",在JDK1.8以前接口中只能放抽象方法.
    接口是特殊的類
    接口是結構設計共計,用來解耦合,隔離實現
    語法:
        Interface 代替class關鍵詞
        implements代替extends關鍵詞
        接口中只能定義:
            公開的常量
                //接口中是能夠的定義變量,,
                Public  static  finalinta=5;
                //變量默認修飾符publicstaticfinal,其實是一個常量
            公開的抽象方法
                Public   abstract  void  show();//接口中的方法默認修飾符public  abstract
                接口不能實例化,必須在implements中實現接口中的抽象方法
                接口中的方法能夠重載
            公開的內部類,內部接口
        接口中沒有構造方法
        類能夠同時實現多個接口:
            Class A extends Object implements x,y,z{}
        接口之間繼承,不用實現關鍵詞(能夠繼承多個接口),用extends
            Interface A extends x,y,z{
            }

        一個類能夠實現多個接口,子接口中能夠有相同的方法(接口中只有方法名沒有具體的實現代碼)
        java中接口是網狀
        java中繼承是樹狀結構
        java放棄了對接口的編譯檢查
        Javap xxx.calss能夠反編譯

![](https://s1.51cto.com/images/blog/201908/18/6f444ec9c64b7cf101bdd778019c0d00.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
相關文章
相關標籤/搜索