大資料JAVA基礎第十天

來源:互聯網
上載者:User

標籤:用法   相同   使用   class   his   類成員   多層   同名   get   

1.繼承extends(也叫擴充)

 

引入

首先寫兩個類:

    //定義學生類

    class Student {

       //成員變數

       private String name;

       private int age;

       //空構造

       public Student(){}

      

       //getXxx()/setXxx()

   

       public void eat() {

           System.out.println("吃飯");

       }

    }

 

//定義教師類

    class Teacher {

       //成員變數

       private String name;

       private int age;

       //空構造

       public Teacher(){}

      

       //getXxx()/setXxx()

      

       public void eat() {

           System.out.println("吃飯");

       }

    }

2.繼承概述

多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那麼多個類無需再定義這些屬性和行為,只要繼承那個類即可。

通過extends關鍵字可以實作類別與類的繼承,繼承的格式如下:

    class 子類名 extends 父類名 {} 

單獨的這個類,也就是被繼承的類,稱為父類,基類或者超類;這多個類稱為子類或者衍生類別。

有了繼承以後,我們定義一個類的時候,可以在一個已經存在的類的基礎上,還可以定義自己的新成員。

3.繼承的案例和繼承的好處

通過一個具體案例來示範代碼

案例1:學生類和教師,定義兩個功能(吃飯,睡覺)

案例2:加入人類後改進

/*

    繼承概述:

       把多個類中相同的內容給提取出來定義到一個類中。

    格式:

       class 子類名 extends 父類名 {}

    好處:

       A:提高了代碼的複用性

       B:提高了代碼的維護性

       C:讓類與類之間產生了關係,是多態的前提

*/

//使用繼承前

/*

class Student {

    public void eat() {

       System.out.println("吃飯");

    }

    public void sleep() {

       System.out.println("睡覺");

    }

}

4.繼承的好處

提高了代碼的複用性

   多個類相同的成員可以放到同一個類中

提高了代碼的維護性

   如果功能的代碼需要修改,修改一處即可,繼承的類中自動都被修改了

讓類與類之間產生了關係,是多態的前提

5.Java中繼承的特點

  • Java只支援單繼承,不支援多繼承。

    即:一個類只能有一個直接父類,不可以有多個直接父類。

 

    class SubDemo extends Demo{}           //ok

    class SubDemo extends Demo1,Demo2...//error不能繼承多個類

 

  • Java支援多層繼承(繼承體系)

    class A{}

    class B extends A{}

    class C extends B{}

 

6.Java中繼承的注意事項

子類只能繼承父類所有非私人的成員(成員方法和成員變數)

 

子類不能繼承父類的構造方法,但是可以通過super(後面講)關鍵字去訪問父類構造方法。

 

不要為了部分功能而去繼承

 

我們到底在什麼時候使用繼承呢?

繼承中類之間體現的是:"is a"的關係。

7.繼承中成員變數的關係

案例示範

子父類中同名和不同名的成員變數

子類方法中尋找變數的順序

類的組成:

       成員變數:

       構造方法:

       成員方法:

    而現在我們又講解了繼承,所以,我們就應該來考慮一下,類的組成部分的各自關係。

    繼承中成員變數的關係:

       A:子類中的成員變數和父類中的成員變數名稱不一樣,這個太簡單。

       B:子類中的成員變數和父類中的成員變數名稱一樣,這會出現什麼情況呢?

           在子類方法中訪問一個變數的尋找順序:

           a:在子類方法的局部範圍找,有就使用

           b:在子類的成員範圍找,有就使用

           c:在父類的成員範圍找,有就使用

           d:如果還找不到,就報錯。

8.結論

在子類方法中訪問一個變數

首先在子類局部範圍找,也就是方法內部

然後在子類成員範圍找,也就是子類的成員變數

最後在父類成員變數範圍找(肯定不能訪問到父類局部範圍)

如果還是沒有就報錯。

9.super關鍵字

super的用法和this很像

this   代表本類對象的引用

super  代表父類儲存空間的標識(可以理解為父類對象的引用)

 

用法(this和super均可如下使用)

  • 訪問成員變數

    this.成員變數

    super.成員變數(訪問父類的成員變數,不能訪問父類的private變數)

    訪問靜態成員時,也可以用:父類名.靜態成員

  • 訪問構造方法(子父類的構造方法問題再講)

this(…)       super(…)          //

  • 訪問成員方法(子父類的成員方法問題再講)

   this.成員方法()     super.成員方法()

10.問題是:

       我不僅僅要輸出局部範圍的num,還要輸出本類成員範圍的num。怎麼辦呢?

       我還想要輸出父類成員範圍的num。怎麼辦呢?

           如果有一個東西和this相似,但是可以直接存取父類的資料就好了。

           恭喜你,這個關鍵字是存在的:super。

    this和super的區別?

           this代表本類對應的引用。

           super代表父類儲存空間的標識(可以理解為父類引用,可以操作父類的成員)

           A:調用成員變數

              this.成員變數 調用本類的成員變數

              super.成員變數 調用父類的成員變數

           B:調用構造方法

              this(...)  調用本類的構造方法

              super(...) 調用父類的構造方法

           C:調用成員方法

              this.成員方法 調用本類的成員方法

              super.成員方法 調用父類的成員方法

大資料JAVA基礎第十天

相關文章

聯繫我們

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