JAVA一個盒子(繼承)

繼承是面向對象編程技術的一塊基石,因爲它允許創建分等級層次的類。運用繼承,能夠創建一個通用類,定義一系列相關項目的一般特性。該類可以被更具體的類繼承,每個具體的類都增加一些自己特有的東西。

 package JAVA_Project_01_05;

//繼承一個類,只要用extends關鍵字把一個類的定義合併到另一箇中便可。
// 語法格式:(public)class子類名extends父類名。在Java術語中,被繼承的類叫超類或基類,
// 繼承超類的類叫派生類或子類。
//
//· 儘管子類包括超類的所有成員,但它不能訪問超類中被聲明成private的成員。
//
//· 超類的一個引用變量可以被任何從該超類派生的子類的引用賦值,即超類變量可以引用子類對象。
// 當一個子類對象的引用被賦給一個超類引用變量時,只能訪問超類定義的對象的一部分。
class Box {//盒子的超類

    double width;//盒子的寬度

    double height;//盒子的高度

    double depth;//盒子的深度

    Box(Box box) {//帶對象的構造方法

        this.width = box.width;

        this.height = box.height;

        this.depth = box.depth;

    }

    Box(double width, double height, double depth) {//帶參數構造方法

        this.width = width;

        this.height = height;

        this.depth = depth;

    }

    Box() {//默認構造方法

        this.width = -1;//用-1表示

        this.height = -1;

        this.depth = -1;

        System.out.println("IamaBox");

    }

    Box(double len) {//構造正方體

        this.width = this.height = this.depth = len;

    }

    double volume() {//求體積

        return width * height * depth;

    }

}

class BoxWeight extends Box {

    double weight;

    BoxWeight(double w, double h, double d, double m) {//帶參數的構造方法

        width = w;

        height = h;

        depth = d;

        weight = m;

    }

    BoxWeight() {

        System.out.println("IamasmallBox");

    }

}

public class TextExtends {//操作一個盒子的繼承的類

    public static void main(String[] args) {//Java程序主入口處

        BoxWeight weightBox = new BoxWeight(10, 20, 15, 34.0);//子類實例化對象

        Box box = new Box();//超類實例化對象

        double vol;

        vol = weightBox.volume();//子類調用超類方法

        System.out.printf("盒子box1的體積:%s%n", vol);

        System.out.printf("盒子box1的重量:%s%n", weightBox.weight);

        box = weightBox;

        vol = box.volume();//調用方法

        System.out.printf("盒子box的體積:%s%n", vol);

        //System.out.printf("盒子box的重量:%s%n",box.weight);

        Box box2 = new BoxWeight();//超類引用子類對象

    }

}

/*
(1)程序中定義一個超類及繼承超類的子類。其中在超類中定義一個盒子的高度、寬度和深度,
子類繼承超類的所有特片併爲自己增添一個重量成員。繼承可以讓子類沒有必要重新創建超類中的所有特徵。

(2)在main()主方法中在子類帶參數實例化對象時,由於繼承超類,則需要打印超類
默認構造方法中的語句IamaBox。當超類不帶參數實例化對象時調用默認構造方法也打印出Iam aBox。
將子類對象賦給超類變量,weight是子類的一個屬性,超類不知道子類增加的屬性,
則超類不能獲取子類屬性weight的值。超類變量引用子類對象,可以看作是先實例化超類接着實例化子類對象,
則打印出超類和子類默認構造方法中的語句。
 */
發佈了71 篇原創文章 · 獲贊 12 · 訪問量 4533
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章