国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java教程之java繼承示例詳解

2019-11-26 15:34:01
字體:
來源:轉載
供稿:網友

什么是繼承(extends)?

繼承是:新定義的類是從已有的類中獲取屬性和方法的現象。 這個已有的類叫做父類, 從這個父類獲取屬性和方法的類叫做子類。

ExtendsDemo1.java

復制代碼 代碼如下:

/*什么是繼承*/
public class ExtendsDemo1 {
    public static void main(String[] args) {
        Truck t = new Truck();
        t.size = 100;           //不建議這么寫。初始化成員變量最好使用構造方法,或者提供set(), get()接口.
                                //貨車類的一個實例t從汽車類從繼承了size, color屬性。
                                //而貨車比汽車多一個貨箱
    }  
}

class Car {                     //汽車
    int size;                   //車體大小
    String color;               //顏色
}

class Truck extends Car {       //貨車
    String packingBox;          //貨箱
}

繼承的好處

1. 提高了代碼的重用性

2. 讓類和類之間產生了關系, 為多態創造了條件。

繼承(extends)的格式 

復制代碼 代碼如下:

class SubClass extends SuperClass {
 //執行語句;
}


super關鍵字

1. super關鍵字和this的用法相同

2. this代表本類引用, super代表父類引用

3. 當子類和父類出現同名成員的時候, 可以用super 和 this進行區分

SuperDemo.java

復制代碼 代碼如下:

/* super的用法
 * 輸出結果:
 * super.i = 10, this.i = 20
 */
public class SuperDemo {
    public static void main(String[] args) {
        new SubClass().showMessage();
    }  
}

class SuperClass {
    int i = 10;
}

class SubClass extends SuperClass {
    int i = 20;

    public void showMessage() {
        System.out.printf("super.i = %d, this.i = %d/n", super.i, this.i);
    }  
}

對從父類繼承過來的方法進行重寫(Override)

1. 當子類中出現與父類一模一樣的方法(返回值, 函數名, 形參)時, 會出現重寫(Override)操作.

OverrideDemo1.java

復制代碼 代碼如下:

/* 怎么對從父類繼承過來的方法進行重寫(Override)
 * 輸出結果:
 * SuperClass: I am good~
 * SubClass: I am excellent~~~
 */
public class OverrideDemo1 {
    public static void main(String[] args) {
        SubClass sc = new SubClass();
        sc.speak();
    }  
}

class SuperClass {
    public void speak() {
        System.out.println("SuperClass: I am good~");
    }  
}

class SubClass extends SuperClass {
    @Override                   //@Override表示下面出現的方法會出現重寫操作,由編譯器檢查,如果達不到重寫的條件,就會報錯。一定程度上增加了代碼的安全性
和健壯性
    public void speak() {
        super.speak();
        System.out.println("SubClass: I am excellent~~~");
    }  
}

2. 在對父類方法進行重寫(Override)操作的時候,子類不允許出現與父類同名同參但是不同返回類型的方法.

OverrideDemo2.java

復制代碼 代碼如下:

/* 子類中不允許出現與父類同名同參但是不同返回類型的方法
 * 出錯信息:
 * OverrideDemo.java:20: error: f() in SubClass cannot override f() in SuperClass
 *  public int f() {
 *                 ^
 *                   return type int is not compatible with void
 *                   OverrideDemo.java:19: error: method does not override or implement a method from a supertype
 *                      @Override
 *                          ^
 *                          2 errors
 */
public class OverrideDemo2 {
    public static void main(String[] args) {

    }  
}

class SuperClass {
    public void f() {

    }  
}

class SubClass extends SuperClass {
    @Override
    public int f() {
        return 1;
    }  
}

3. 子類重寫父類的方法的訪問權限要大于或者等于父類中被重寫的方法

OverrideDemo3.java

復制代碼 代碼如下:

/* 子類重寫父類的方法的訪問權限要大于或者等于父類方法的訪問權限
 * 出錯信息:
 * OverrideDemo.java:18: error: f() in SubClass cannot override f() in SuperClass
 *  protected void f() {
 *                     ^
 *                       attempting to assign weaker access privileges; was public
 *                       1 error
 */

public class OverrideDemo3 {
    public static void main(String[] args) {

    }  
}

class SuperClass {
    public void f() {
    }  
}

class SubClass extends SuperClass {
    @Override
    protected void f() {            //把這里的訪問權限改為public即可

    }  
}

訪問控制符

訪問控制符有:public, protected, default, private

有些需要一點包(package)的知識,所以等到講包的時候再說.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙胜| 南乐县| 古交市| 临西县| 台中市| 隆昌县| 宁陵县| 隆昌县| 翁牛特旗| 新津县| 措美县| 西贡区| 宕昌县| 定结县| 尉氏县| 横峰县| 兰西县| 滦南县| 贺兰县| 邵阳县| 兰西县| 南丹县| 萝北县| 班戈县| 望江县| 柘城县| 浠水县| 西畴县| 镇宁| 寻甸| 宝兴县| 响水县| 夏河县| 盐城市| 永福县| 普兰县| 基隆市| 寿宁县| 承德县| 遂溪县| 楚雄市|