JAVA圖形面積與周長(抽象類)

/*面向對象具有抽象性、封裝性、繼承性、多態性。抽象性是將具有一致的數據結構(屬性)和行爲(操作)的對象抽象成類

一個類就是一種抽象。封裝性體現在Java中的數據除了基本類型的數據外,都以對象的形式存在,對象是方法與數據的封裝體。
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關係。在定義和實現一個類的時候,
可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作爲自己的內容,並加入若干新的內容。
多態性指相同的操作或函數、過程可作用於多種類型的對象上並獲得不同的結果。不同的對象,收到同一個消息可以產生不同的結果。
多態性允許每個對象以適合自身的方式去響應共同的消息,增強了軟件的靈活性和重用性。本章將具體介紹面向對象的特徵及應用。
*/

package JAVA_Project_01_05;//創建一個包

//抽象類是Java中一種特殊的類。抽象類不能創建對象,而只能由其派生子類創建。抽象類是專門作其他類的父類來使用的。
// 本實例介紹如何運用抽象類獲得不同圖形的面積。

// 用關鍵字abstract修飾符來定義抽象類。abstract放在關鍵字class之前,語法格式:(public)abstractclass類名{}。
// 並用abstract來定義抽象方法,abstract放在方法返回類型之前。語法格式:abstract返回類型方法名()。
//· 抽象類必須作爲其他類的父類,並且,子類要全部實現父類中的抽象方法,否則也要聲明爲抽象類。


abstract class Geometric {//創建抽象類

    String color = "block";

    int weight = 2;

    abstract float getArea();//抽象構造方法求面積

    abstract float getPerimeter();//抽象構造方法求周長

}

class Circle extends Geometric {//繼承Geometric,求圓的面積和周長

    float radius;

    Circle(float number) {//帶參數的構造方法

        radius = number;

    }

    protected float getArea() {//實現父類抽象方法求圓的面積

        return 3.14f * radius * radius;

    }

    protected float getPerimeter() {//實現父類抽象方法求圓的周長

        return 2 * 3.14f * radius;

    }

}

class Rectangle extends Geometric {//繼承Geometric求長方形的面積和周長

    float width;

    float height;

    Rectangle(float width, float height) {//帶參數的構造方法

        this.width = width;

        this.height = height;

    }

    float getArea() {//實現父類抽象方法求長方形的面積

        return width * height;

    }

    float getPerimeter() {//實現父類抽象方法求長方形的周長

        return 2 * (width * height);

    }

}
public class TextAbstract {//操作抽象類求圖形面積的類

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

        System.out.println("1.獲得圓的面積與周長");

        Circle circle = new Circle(4);//創建圓對象實例

        System.out.printf("圓的面積:%s%n", circle.getArea());

        System.out.printf("圓的周長:%s%n", circle.getPerimeter());

        System.out.println("2.獲得長方形的面積與周長");

        Rectangle rectangle = new Rectangle(3, 4);//創建長方形對象實例

        System.out.printf("長方形的面積:%s%n", rectangle.getArea());

        System.out.printf("長方形的周長:%s%n", rectangle.getPerimeter());

    }
}

/*
(1)用關鍵字abstract創建Geometric抽象類,並聲明兩個抽象構造方法。默認的抽象方法擁有受保護的訪問權限,即默認用protected訪問修飾符修飾。簡單地說,只有類內部和子類可以訪問該成員。

(2)Circle和Rectangle類繼承Geometric抽象類,必須實現所有的抽象方法,否則需要在關鍵字class前加abstract成爲抽象類。*/
發佈了71 篇原創文章 · 獲贊 12 · 訪問量 4536
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章