java基礎2:抽象類別、介面與多態

來源:互聯網
上載者:User

標籤:抽象類別   介面   多態   javase   



關於Java基礎的文章,我覺得寫得還可以,以前發在了我其它的部落格了,肯定是原創,現在再分享給大家出來。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



  抽象類別、介面、多態都是物件導向中很基礎的東西,我相信看到能本篇部落格的人本不會再糾結它的基本定義了,本篇文章將盡量的更加深層次的挖掘其內涵,希望能對大家有協助。

 一、抽象類別

  1、形式

 abstract class Ceshi   {      abstract void show();  }  class DemoA extends Ceshi  {      void show()     {          System.out.print("Hello world");     } }


  2、特點

    a、抽象類別不可以被執行個體化

    b、抽象類別必須有其子類覆蓋了所有抽象方法後,該子類才可以執行個體化,否則,該子類還是抽象類別。

    c、抽象方法必須定義在抽象類別中,該類必須也被abstract修飾。

  3、那麼問題來了

    a、抽象類別有建構函式嗎?

      有,用於給子類執行個體化。

    b、抽象類別可以不定義抽象方法嗎?

      事實上是可以的,但是很少見。

    c、抽象類別和一般類的異同點。
      相同點:
        抽象類別和一般類都是用來描述事物的,都在內部定了成員。
      不同點:
        1,一般類有足夠的資訊描述事物。抽象類別描述事物的資訊有可能不足。
        2,一般類中不能定義抽象方法,只能定非抽象方法。抽象類別中可定義抽象方法,同時也可以定義非抽象方法。
        3,一般類可以被執行個體化。抽象類別不可以被執行個體化。

 二、介面

  從某種意義上說,介面是一種特殊形式的抽象類別,在java語言中抽象類別表示的是一種繼承關係,一個類只能繼承繼承一個抽象類別,而一個類卻可以實現多個介面。

我們都知道介面的定義方式是

interface Demo{   void show();      }


其實對於介面當中常見的成員:而且這些成員都有固定的修飾符。
 a、全域常量: public static final

 b、抽象方法:public abstract

 1、由此得出結論,介面中的成員都是公用的許可權。即全寫是

interface Demo{    public static final int num = 4;    public abstract void showa();}


2、介面特點

  a、介面是對外暴露的規則,是程式功能的擴充。

  b、介面降低了耦合性。

  c、一個類可以實現多個介面

    abstract class Test2 extends Q implements A,Z{}


3、介面與抽象類別異同點

  相同點:
    都是不斷向上抽取而來的。

  不同點:

    1,抽象類別需要被繼承,而且只能單繼承。介面需要被實現,而且可以多實現。 

    2,抽象類別中可以定義抽象方法和非抽象方法,子類繼承後,可以直接使用非抽象方法。介面中只能定義抽象方法,必須由子類去實現。

 

 三、多態

  一個對象有不同的形態,這就是多態。

  比如 動物 ani = new 狗();

  這就是多態在代碼中的體現:父類引用指向子類對象。

1、多態好處與弊端

  多態的好處:提高了代碼的擴充性,前期定義的代碼可以使用後期的內容。

  多態的弊端:前期定義的內容不能使用(調用)後期子類的特有內容。

2、向下轉型

動物 ani = new Cat();Cat c = (Cat)ani;


3、內部類

  內部類是我們以前建的比較少的,其實就是類裡面有類。

class Outer//外部類{    class Inner// 內部類。    {    }   }   

a、內部類如何引用外部類?

  內部類持有了外部類的引用。  外部類名.this。

class Outer{    int num = 3;    class Inner    {        int num = 4;        void show()        {            int num = 5;            System.out.println(Outer.this.num);        }    }    void method()    {        new Inner().show();    }} 


3、內部類可以存放在局部位置上,且在局部位置上只能訪問局部中被final修飾的局部變數。

class Outer{    void method()    {        final int x = 9;        class Inner        {            public String toString()            {            }        }    }} 


4、匿名內部類

匿名內部類是內部類的一種簡寫形式,其實就是一個匿名子物件。

    public void method()    {        new Demo()//匿名內部類。        {            void show()            {                System.out.println("show:"+num);            }        }.show();    } 


 四、最後

抽象類別、介面和多態雖然簡單,但是常用,尤其像是內部類、匿名內部類這些我們以前接觸較少,更應該重點掌握。

 

java基礎2:抽象類別、介面與多態

聯繫我們

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