天天看點

黑馬程式員—Java入門學習日記基礎篇-面向對象總結4

------- android教育訓練、 java教育訓練、期待與您交流! ----------

- Java面向對象程式設計知識點總結。

一:final關鍵字。

  1. final關鍵字可以修飾類、方法和變量。
  2. final修飾的類不可以被繼承,是為了避免被子類修改功能。
  3. 被final修飾的方法不能被複寫。
  4. 被final修飾的變量是一個常變量,隻能指派一次,既可以修飾成員變量,也可以修飾局部變量。(但描述一些事物時,一些資料的出現是固定的,那麼這時為了增強閱讀性,都給這些值起一個名字,以友善閱讀)

    如: final int PI = 3.14;

    5.常變量的書必須全大寫,多個單詞組成則為全大寫下劃線連接配接。如:PI_MATH。

    二.抽象類。

    當多個類中出現相同的功能,但功能的主體不同,這時要向上抽取,隻抽取功能的定義,而不抽取功能的主體。

    1.抽象:1.抽象方法一定要定義在抽象類中。2.抽象方法和抽象類都必須被abstract關鍵字修飾。3.抽象類不可以使用new建立對象,因為抽象類的方法沒有方法主體,調用無意義。4.抽象類中的方法要使用,必須由子類複寫其所有的抽象方法後,建立子對象的調用。如果子類隻覆寫了部分的抽象功能,那麼該子類還是一個抽象類。

    2.抽象類的描述:抽象類同一般類沒有太大的差別,該如何描述事物還若何描述,隻不過該類中出現了一些抽象的或者說是看不懂的東西。這些不确定的東西也是該事物的功能需要明确出現,但是無法定義其方法主體,是以通過抽象方法表示出來。抽象類隻是比普通類多了一個抽象方法。

    3.模闆方法:在定義功能時,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那麼這時就将不确定的部分暴露出去,由該子類去完成。

    如下代碼所示:

    abstract class GetTime

    {

      public final voidgetTime()

      {

            long start = System.currentTimeMillis();//擷取系統開始運作時間。

            runCode();//調用不确定的父類抽象方法

            long end =System.currentTimeMillis();//結束時間

            System.out.println("用時:"+(end -start));

      }

    public abstract void runCode();//定義不确定方法為抽象方法。

    }

    class Son extends GetTime

    {

      public void runCode()//子類複寫其父類的抽象方法

      {

            for(int i =0;i<=10000;i++)

            {

             System.out.println(i);

            }

      }

    }

    class  ModelDemo

    {

      public static voidmain(String[] args)

      {

         Son son = new Son();

         son.getTime();//掉用對象方法測試結果。

      }

    }

    黑馬程式員—Java入門學習日記基礎篇-面向對象總結4

    三.接口。

    當抽象類中的方法都是抽象的,那麼該類可以使用接口的方式表示,class用于定義類部分抽象,interface用于定義接口全部抽象。

    1.接口成員:1.常量和成員方法為全部抽象。2.接口中的成員都有固定的修飾符:常量的修飾符必須是:public static final。3.方法的修飾符必須是:public abstract。是以接口中的成員全是public,若不加修飾符系統将自動添加完全。是以書寫時隻寫變量和方法的類型就可以,但不好識别。抽象的方法後邊跟分好。

    2.子類實作父類使用implement關鍵字。

    Implement與extends的差別,implement表示子類對接口的功能的實作,而不是繼承。對于變量因為其為static類型,是以通過靜态的屬性去通路如使用接口名調用,也可以使用子類的名去掉用,因為其是共享資料。而且其不能被重寫(final修飾)。extends是子類繼承父類的全部屬性。

    3.接口也不可以建立對象,因為其全部為抽象方法,需要被子類實作,之類對接口中的功能要全部複寫後,子類才可以建立對象。

    4.接口可以被類多實作。Java語言不支援多繼承,但支援多實作,一個子類可以實作多個接口的功能

    5.接口的特點1、接口是對外暴漏的。2、使程式可以功能擴充。3、可以多實作,降低耦合性。4、類與接口之間是是實作關系,而且類可以繼承自一個類的同時,還可以實作多個接口。

    四.多态。

    可以了解為事物存在多種形态。如:同一方法存在不同的函數功能(重寫),抽象父類的引用可以指向子類對象。

  1. 多态的前提:必須類與類之間有繼承或實作的關系,并且存在重寫才能使用。

    2.多态的應用:

    abstractclass Animal

    { public static int NUM = 10;

      public int x = 21;

      abstract void eat();

      abstract void run();

      public void wow()

      {

         System.out.println("let mespeak");   

      }

    }

    //------------------------------------------------------------

    class Catextends Animal

    { public int x = 10;//

      public void eat()

      {

      System.out.println("let me eatsomething"+NUM);

      }

      public void run()

      {

      System.out.println("let me walk");

      }

      public void sleep()

      {

      System.out.println("let me sleep");

      }

    }

    //--------------------------------------------------------------

    class Dogextends Animal

    {

        public voideat()//---------------------------------------

      {

      System.out.println("let me eatbone");

      }

      public voidrun()//---------------------------------------

      {

      System.out.println("let me run");

      }

      public void wow()

      {

         System.out.println("let me wow");  

      }

    }

    //--------------------------------------------------------------

    class AbsDemo

    {

      public static void main(String[] args)

      {

            Animal cat = new Cat();

            Animal dog = new Dog();

            kind(cat);

            kind(dog);

            System.out.println(Animal.NUM+dog.NUM);

            Cat c = (Cat)cat;

            c.sleep();

      }

       publicstatic void kind(Animal a)

      {

         a.eat();

         a.run();

         a.wow();

         System.out.println(a.x);

      }

    }

    黑馬程式員—Java入門學習日記基礎篇-面向對象總結4
    //--------------------------------------------------------------