作者 主題: 抽象類別實作介面  (閱讀 3168 次)

0 會員 與 1 訪客 正在閱讀本文。

kiei

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
抽象類別實作介面
« 於: 2012-06-20 16:15 »
寫了一個java沒有介面的程式, 有沒有高手可以將circu和area改寫成介面的方式實作呢? 感謝!!!

題目:
請使用C++及Java 撰寫三個類別(class):shape(形狀)、circle(圓形)與rectangle(矩形),其中shape 為抽象類別(abstract class),而circle 與rectangle 為衍生類別(derived class),均繼承shape。請在shape 中定義兩個介面(interface),分別作為運算週長(circumference)與面積(area)的介面,並在circle 與rectangle 中分別實作其功能。

abstract class Shape {
  public Shape() {}
  abstract public double circu();
  abstract public double area();
}
class circle extends Shape {
  private double r;     // 圓形半徑
  final static double PI = 3.14159;  // 圓周率常數
  public circle(double r) {
    this.r = r;
  }
  public double circu() {// 計算圓週長
    return 2*PI*r;
  }
  public double area() {// 計算圓面積
    return PI*r*r;
  }
  public String toString() {
    return "半徑:" + r + "==>週長:" + circu() + ",面積:" + area();
  }
}
class rectangle extends Shape {
  private double w;     // 方形寬
  private double h;     // 方形高
  public rectangle(double w, double h) {
    this.w = w;
    this.h = h;
  }
  public double circu() {// 計算方週長
    return 2*(w+h);
  }
  public double area() {// 計算方面積
    return w*h;
  }
  public String toString() {
    return "寬:" + w + ",高:" + h + "==>週長:" + circu() + ",面積:" + area();
  }
}
public class ShapeArea {
  public static void main(String[] argv) {
    circle c1 = new circle(6);
    System.out.println("圓形"+c1.toString());
    rectangle r1 = new rectangle(3,4);
    System.out.println("方形"+r1.toString());
  }
}