java基礎第六篇之經常使用思想、封裝、繼承和多態

a.累加求和思想:求1~100的和,求數組/集合中元素的和,求偶數的數,求總分java

    int sum=0//循環外部定義sum變量,循環裏面對每一個元素累加數組

    

    for (; ; ) {ide

    //sum+=數據 this

    }設計

    

    System.out.println(sum);對象

 

  b.計數器思想:摺紙次數,水仙花個數繼承

   int count=0;開發

   for (; ; ) {//這只是個結構字符串

  //知足某些條件 count++編譯

 

   }

   System.out.println(count);

   

 

  c.拆解邏輯思想:把大問題拆成小問題,每一個小問題考慮用方法實現

    1.字符數組爲了使用String類中的方法,把字符數組變成字符串

    2.已知文件中存在用戶名,用戶錄入判斷是否重複

      a.讀取文件中的內容=>存儲集合中

      b.拿着用戶錄入的用戶名與集合中的用戶名一一對比

        一旦發現重複,立馬返回false,不然返回true

  

  d.重置標記思想

    1.已知容器中裝滿了數據,咱們要在容器查找某個元素是否已經存在

    String[] str={"魚翅","鮑魚","海蔘","海膽"}

    String findStr="鮑魚";//String findStr="海馬"

   

    boolean flag=false;//爲了區分找到和循環遍歷完沒找到的兩種狀況

    for (int i=0;i<str.length;i++ ) {

       if(str[i].equals(findStr)){

            flag=true;

             break;//找到以後直接中止查找

       }

    }

     if(flag){

     //必定找到

     }else{

     //沒找到

     }

面向過程:強調的過程,步驟

 * 面向對象: 是一種思想,強調對象

 *

 *  在現實生活中:先有對象,類是咱們人根據實物的特徵分類

 *  在代碼中:必須先有類,經過類能夠建立無數個對象

 

 

 * this關鍵字:

 * 1.this 的做用:

 * 區分局部變量和成員變量同名的狀況

 * this.xxx 那麼這個xxx是成員變量

 * 沒有this. 好比  name,那麼這個是指局部變量

 *  2.this的本質

 *  this表明當前對象,就是this所在的方法,被誰調用,誰就是當前對象

 

 匿名對象:

 *   沒有名字的對象,是指只建立對象 可是不用變量來接收

 * 匿名對象的特色:

 * 匿名也是一個對象,徹底擁有對象的功能

 * 1.匿名對象.成員變量 = 10;

 * 2.syso(匿名對象.成員變量);

 * 3.匿名對象.方法名();

 *  缺點:一個匿名對象只能使用一次

 *

 *  當一個對象 我只想使用一次的時候,那麼能夠考慮用匿名對象

 

 方法的參數:能夠是基本類型,也能夠是引用類型

 * 若是方法參數是引用類型,那麼調用方法時須要的是該引用類型的對象

 *

 * 舉例子:殺孫猴子

 *

 * 方法的返回值:能夠void 能夠基本類型,也能夠是引用類型

 * 若是方法的返回值是引用類型,那麼調用方法 咱們要返回的是該類的一個對象

 

 繼承:java面向對象的是三大特性之一(封裝,繼承,多態)

 *

 封裝:當代碼多了,用方法封裝,當方法多了,用類封裝,當類多了,用包封裝

 

 * 組合關係:

 * 當一個自定義類型A的成員變量的數據類型是自定義類型B時,A類與B類叫作組合關係。

 *

 * 舉例: 家庭

 * public class Family{

 * private Person wife;

 * private Person Husband;

 * }

 *

 * 現實生活中的繼承: 由孩子 繼承  父輩的財產

 *

 * 代碼中繼承: 由 一個類(子類/派生類) 去繼承另一個類(父類/超類/基類)

 * 子類能夠繼承父類一切的可繼承的屬性和方法

 *

 * 繼承的代碼格式:

 * public class 子類名字  extends 父類名字{

 * //成員變量

 * //成員方法

 * }

 *

 * 舉例: 員工類做爲父類,他有三個子類(教師,助教,班主任)

 

 1.繼承過程當中 子父類成員變量的特色:

 * 經過子類對象訪問成員變量時:

 * 若是這個成員變量子類有,那麼優先訪問子類本身的

 * 若是這個成員變量子類沒有,那麼再去方問父類繼承下來的

 * 若是父類也沒有,編譯就報錯

 *

 * 2.繼承過程當中 子父類成員方法的特色:

 * 成員方法的特色和上面的成員變量的特色是同樣

 *

 * 總結:繼承過程當中 子父類成員變量/成員方法的特色:

 * 子類有用子類本身的,子類沒有再去找父類,父類尚未編譯報錯

 

 java中類的設計原則:

 * 向上抽取共性原則

 *

 * 定義4個類:

 * 貓,狗,樹,花

 

 繼承中子類中出現與父類重名的成員變量

 *

 * 1.this:區分紅員變量和局部變量同名時

 *

 * 2.super:只能在子類中使用,顯示訪問父類繼承過來變量或者方法

 * 格式:super.變量名

 * super.方法名();

 * 做用:區分父類繼承過來的成員變量 和 子類本身擁有的成員變量同名的狀況

 

 繼承中方法重寫

 *

 * 1.方法的重載(overload):在一個類中,java容許方法名相同 可是參數列表必須不一樣

 * 參數列表必須不一樣:參數的個數,參數的類型,參數的順序不一樣

 *

 * 2.方法的重寫/覆寫/覆蓋(override):子類和父類中的方法的關係,子類出現了父類如出一轍的方法

 

  總結以上案例:何時須要重寫父類的方法?

 * 當子類發現父類的某一個方法,對於子類來講不適合,那麼子類能夠重寫

 

  this.成員變量: 訪問本類本身的成員變量

 * this.成員方法: 訪問本類本身的成員方法

 *

 * super.成員變量:訪問父類繼承過來的成員變量

 * super.成員方法:訪問父類繼承過來的成員方法

 * super表示子類中父類繼承過來的成員的標識.

 

 * 除了以上用法 還有下面的用法

 *

 * this();//this 的語句形式

 * 在本類內部,能夠調用其餘的構造

 * this(參數);//在本類內部調用其餘構造

 *

 * 需求1,建立一個Dog的對象,要求:不管經過何種構造方法建立,Dog對象的年齡就是10歲.

 *

 * super();//super的語句形式

 * 在本類內部調用父類的構造

 * 子類全部的構造(不管有參數的 仍是無參數的)都會默認第一行調用父類的無參數構造

 *

 * 爲何子類會默認調用父類的構造:面向對象設計的一個原則 單一職責原則

 * 一個類 不能太"累",只負責本身數據

 

 面向對象 開閉原則

 

 對修改關閉,對擴展開放.

 

 已經寫好的功能模塊(類),

 咱們不建議修改,可是咱們能夠擴展.

 

 

 抽象類:含有抽象方法的類叫作抽象類

 * 抽象類是不能建立對象(java的規定)

 * 抽象類天生就是做爲父類

 *

 * 抽象方法:一個方法不知道怎麼去實現,那麼咱們能夠不寫方法體,還要在方法的前加上abstract修飾

 *

 *

 * 總結:一個子類 繼承了抽象類, 那麼必須重寫抽象類中的全部抽象方法,而後才能建立對象

 * 不然,這個子類仍是一個抽象類,不能建立對象

 *

 * 關於抽象類的注意事項:

 * 1.抽象類 中 必定有抽象方法嗎?NO,若是一個類沒有抽象方法,也能夠是抽象類,可是不讓咱們建立該類的對象

 * 2.抽象類中是能夠不定義抽象方法的,此時僅僅是不讓該類建立對象,用於某些特殊的設計須要。

 * 3.設計時由具體類抽取出抽象類,而開發階段應該先定義抽象父類,再根據不一樣需求由父類定義子類。

 

 

//子類繼承了抽象類,會報錯

//1.給本類加上abstract修飾

//2.重寫那個抽象方法

 

面向對象使用:

 *   名詞提煉法: 小明 在公交車上牽着一條嘴裏叼着熱狗的狗

 * 小明:人類

 * 公交車:車類

 * 熱狗:食物類

 * 狗:動物/狗類

 *  案例: 士兵突擊(標題黨)

 * 一個士兵開槍打死了一個鬼子

 * 士兵: Soldier

 *  名字,等級

 *  方法:開槍

 * 槍:  Gun

 * 名稱,顏色

 * 方法:發射子彈

 * 鬼子:Animal

 * 暱稱

 * 方法:會死

相關文章
相關標籤/搜索