Java學習筆記之六——Java類的繼承和多態(1)

來源:互聯網
上載者:User

一,Java類的繼承

1,為什麼要繼承?

答:通過繼承可以使對對象的描述更加清晰,可以實現代碼的複用,可以實現重寫類中的變數或方法,可以實現在無原始碼的情況下修改被繼承的類。

2,Java的類如何?繼承?

答:Java類的繼承是單一的,也是完全繼承的。通過關鍵詞extends關鍵字來實現。被繼承的類稱為父類,繼承父類的類稱為子類。繼承文法:public calss classname extends superclassname.因為Java類的繼承是單一的,所以extends後面只能指定一個父類。而完全繼承則是指“一個類繼承了父類的所有成員變數和成員方法。

例:在l類1中的平面座標系統中設定x和y,當要再定義一個空間座標系的時候只需繼承類1,再在其子類中添加一個z軸就行了。

public class one{    int x;    int y;    public one(){        x = 0;        y = 0;    }}

然後再定義類2,通過類2繼承類1:

public class two extends one{       //繼承類one    int z;    public one(){    z = 0;    }}

這樣就實現了類的繼承。

3,類繼承中的隱藏/覆蓋/重載是怎麼樣的?

答:(1)類的隱藏:隱藏發生在子類和父類之間,針對父類中成員變數和靜態方法而言的。當子類中聲明與父類中聲明的成員變數名相同時,則實現了對父類成員變數的隱藏。

  (2)類的覆蓋:覆蓋也是發生在子類和父類之間,是指在子類中聲明一個與父類具有相同的方法名/輸入參數列表/傳回值/存取權限等的方法,除過方法體不同外。在子類中重新編寫方法實現的功能。常被用於替換父類相同的方法,實現功能的更新。

例:

class three{    public void Display(){     //定義父類中Display方法        System.out.println("This is class three");    }}class four extends three{        //繼承類three    public void Display(){           //覆蓋父類three中的Display方法        System.out.println("This is class four");    }}    

  (3)類的重載:可發生在父類與子類之間,也可發生在同一類中。是指在子類與父類之間或同一類中定義多個具有相同方法名/存取權限等的方法。

例:

class five{    public void Display(){      //父類中Display方法        System.out.println("this is class five");    }}class six extends five{      //繼承類five    public void Display(String s){     //沖在父類中Display方法        System.out.println(s);    }}public class seven{    public static void main(String[] args){        six a = new six();        a.Display();         //調用父類中Display方法        a.Display("this is class six");    //調用子類中Display方法    }}

4,構造方法的重載.

在上例中 six a = new six();new後面是調用類的構造方法,如果當類沒有構造方法的時候,建立類對象時調用無任何操作的預設構造方法。當子類有自身的無形式列表的構造方法時,建立對象時,會先建立父類的對象,再建立子類的對象。

如下面代碼:

//第一個類-------父類public class Output{    public Output(){        System.out.println("This is class Output");    }}//第二個類-------子類public class Input extends Output{    public Input(){        System.out.println("This is class Input");    }}//第三個類public class sample{    public static void main(String[] args){        Input a = new Input();    }}

上面代碼最後輸出為:

This is class Output

This is class Input

可見最後如果沒有構造方法,建立對象後會先調用父類對象,後調用子類對象。

相關文章

聯繫我們

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