java面向對象學習

一:什麼是類 什麼是對象
1.1現實世界是有不少對象組成的,基於對象抽出了類
1.2對象是真實存在的單個的個體,類是一類個體,類型/類別
1.3類中能夠包括:java

全部對象所共有的特徵屬性----變量
    全部對象所共有的行爲--------方法

1.4一個類能夠建立多個對象,同一個類的多個對象,機構相同,數據不一樣
1.5類 是對象的模板,對象是類的具體的實例數組

二:內存管理
由jvm來管理jvm

1.1用於存儲全部new出來的對象(包括成員變量)
    1.2成員變量的生命週期;建立new對象時存在在堆中,對象被GC回收時一併消失
    1.3垃圾:沒有任何引用所指向的對象
        垃圾回收器GC不定時到內存中掃描,看到垃圾不必定立刻回收    
        回收過程是透明的,並非一看到垃圾就立刻回收,想快一點能夠調用System.gc()
    1.4局部變量:調用方法時存在在棧中,方法結束時與之一併消失
    1.5方法區:
        用於存儲.class字節碼文件(包括方法)
        方法只有一份,經過this來區分具體是哪一個

繼承
2.1目的:避免代碼重複,有利於代碼的複用
2.2經過extends實現繼承
2.3父類/基類:全部子類所共有的屬性和行爲 子類:子類所特有的屬性和行爲
2.4子類/派生類繼承父類後,子類具備:子類+父類
2.5一個父類能夠有多個子類,一個子類只能有一個父類-----單一繼承
2.6繼承具備傳遞性
2.7java規定:ide

構造子類方法以前必須先構造父類方法
        子類構造以前沒有調用父類的構造,系統默認super()來調用父類的無參構造
        若本身調用了,則再也不默認提供
        super()調用父類構造,必須位於子類構造的第一行

super:指代當前對象的父類對象函數

1:super.方法名()-----調用父類的方法
    2:super.成員變量名-----調用父類的成員變量
    3:super()------------調用父類的構造方法
向上造型:
    1:父類型的引用指向子類的對象
    2:能點什麼得看引用類型

三:方法
方法:方法的簽名:方法名+參數列表this

1.方法的重載overload:同一個類中,方法名稱相同,參數列表不一樣
              編譯器在編譯時自動根據方法的簽名來綁定調用方法


2.構造方法(構造器,構造函數,構建器)
    經常用於給成員變量賦初值
    與類同名,沒有返回類型    
    在建立(new)對象時被自動調用
    若本身不寫構造方法,則編譯器默認提供無參結構的構造方法
    構造方法能夠重載
3.this:指代當前對象,那個對象調用指的就是哪一個對象
    方法中訪問成員變量以前默認都有個this
   this的用法
    this.成員變量名-------訪問成員變量
    this.(方法名)-------調用方法;
    this()--------------調用構造方法

4.引用類型數組:
    4.1    
        cell[] cells = new cell[4];
        cells[0] = new cell(2,1);
        cells[1] = new cell(2,8);
        cells[2] = new cell(5,5);
        cells[3] = new cell(3,5);

    4.2    
        cell[] cells = new cell[]{
            new cell(2,1);
             new cell(2,8);
             new cell(5,5);
             new cell(3,5);

        }

    4.3    int [][] arr = new int [3] [];
          arr[0] =new int [2];
          arr[1] =new int [3];
          arr[2] =new int [2];
        arr[1][0] = 100;

    4.4     int [][]arr = new int [3][4];
        for(int i = 0;i<arr.length;i++){
            for(int j = 0;j<arr[i].length;j++){
                arr[i][j] = 100;
            }
        }
1.方法的重寫override
    1.1發生在父子類中,方法名相同,
2.重寫與重載的區別
    2.1
    2.2重載:一個類中,方法名相同,參數列表不一樣
        遵循「編譯期」綁定,根據引用的類型綁定
3.package
    3.1做用、;避免類的命名衝突;
    3.2包名能夠有層次結構
    3.3建議包名全小寫
    3.4類的徹底限定名:包名.類名
  import:
    3.11做用:聲明類/引入類
    3.22同包中的類能夠直接訪問
    3.33:不一樣包中的類要訪問得先import聲明類在訪問
4.訪問修飾符:
    4.1public:公開的,任何類
    4.2private:私有的,本類
    4.3protected:受保護的,本類,子類,同包類
    4.4默認的什麼也不寫:本類,同包類
    類發訪問修飾:public和默認的
    類成員的訪問修飾:如上四種皆可


    建議數據私有化private , 行爲公開化public

static:靜態的code

1靜態變量
        由static修飾
        屬於類的,存在方法區中,只有一份
        經常經過類名. 來訪問
        什麼時候用:若全部對象的數據都同樣時使用
    2靜態方法

        由static修飾
        屬於類的,存在方法區中,只有一份
        經常經過類名. 來訪問
        沒有隱式的this來傳遞;靜態方法中不能直接訪問實例成員
        什麼時候用:方法的操做僅與參數相關而與對象無關
        
    3靜態塊
        由static修飾
        屬於類的,類被加載時自動執行,類只被加載一次,因此靜態塊也只執行一次
        什麼時候用:經常用於加載靜態資源圖片音視頻等
        

*成員變量:
1.實例變量:屬於對象的,存在堆中;
        有幾個對象就有幾個實例變量;
        必須經過對象名.來訪問
2.靜態變量:
    由static修飾,屬於類的,存在方法區中
    只有一份
    經常經過類名. 來訪問
    
6.final:不能變
    6.1修飾變量:變量不能被改變
    6.2修飾方法:方法不能被重寫
    6.3修飾類:類不能被繼承


7.static final常量
    7.1必須聲明的同時初始化
    7.2經過類名.來訪問,不能改變
    7.3建議常量名都大寫
    7.4在編譯的同時會自動轉換爲具體的值,效率高



1.抽象方法:由abstract修飾,只有方法的定義沒有方法的實現
2.抽象類:
    2.1由abstract修飾
    2.2包含抽象方法的類必須是抽象類
    2.3抽象類不能被實例化
    2.4抽象類是須要被繼承的,不然無心義,經常使用-----重寫全部抽象類的方法
    2.5意義:
        2.5.1包含公共的屬性和行爲,被子類所共享
        2.5.2爲全部子類所提供一種公共的類型----向上造型
        2.5.3包含抽象方法,爲全部子類提供一個統一的方法,子類有不一樣的實現

接口:視頻

//接口是徹底抽象的抽象類
    1是一個標準、規範
    2由interface定義
    3只能包含常量和抽象方法,略的是public
    4接口是不能被實例化的
    5接口是須要被實現/繼承的,實現類/子類:
                    必須重寫接口中全部的抽象方法
    3.6一個類能夠實現多個接口,用逗號隔開,若又繼承又實現,要先extends後implements
    3.7接口能夠繼承接口

多態:意義:對象

1.1同一類型的引用指向不一樣的對象時,有不一樣的實現
    1.2強制類型轉換,成功的條件有兩個:
        引用所指向的對象,就是該類型
        引用所指向的對象,實現了該接口
    1.3instanceof關鍵字返回的是boolean類型結果,強轉成功的條件就是它爲true的條件

內部類,有本身獨立的.class繼承

1成員內部類
        只服務於外部類,他的對象通常是在外部類建立的
        內部類中能夠直接訪問外部類的成員包括private
        內部類中有個隱式的引用指向建立他的外部類

    2匿名內部類
        經常使用
        想建立一個只用一次的類的對象,該類可沒必要命名
        匿名內部類中訪問外部的數據,該數據必須final類型

面向對象總結

面向對象的三大特徵:
1.封裝

1.1 類:封裝的是對象的屬性和行爲
1.2 方法:封裝的是具體的邏輯功能實現
1.3訪問控制修飾符:封裝的是訪問的權限

2.繼承:

2.1做用:避免代碼的重複,有利於代碼的重用
2.2父類:全部子類所共有的  子類:特有的   子類extends繼承後:子類+父類
2.3單一繼承,多接口實現,具備傳遞性

3.多態

3.1意義:行爲的多態、對象的多態
3.2向上造型、強制類型轉換、instanceof
3.3多態的表現形式:    
    重寫+重載
相關文章
相關標籤/搜索