package jiekou1; public interface ShapePara { //定義常量PI final double PI=3.14; //定義抽象方法 //獲得圖形面積 double getArea(); //獲得圖形周長 double getCircumference(); }
package jiekou1; public class Circle implements ShapePara { //定義成員變量 public double radius; public double x; public double y; //定義構造方法 Circle(double radius) { this.radius=radius; this.x=0; this.y=0; } //定義成員方法 //返回半徑的值 double getRadius() { return radius; } //寫入圓心的坐標 void setCenter(double x, double y) { this.x=x; this.y=y; } //寫入圓的半徑 void setRadius(double radius) { this.radius=radius; } //完善得到面積和周長的方法 @Override public double getArea() { return PI*radius*radius; } @Override public double getCircumference() { return 2*PI*radius; } }
package jiekou1; public class Shape { //成員變量 private ShapePara sp; public ShapePara getSp() { return sp; } public void setSp(ShapePara sp) { this.sp = sp; } //定義成員方法獲得圖形面積 void getArea() { System.out.println(sp.getArea()); } //定義成員方法獲得圖形周長 void getCircumference() { System.out.println(sp.getCircumference()); } }
package jiekou1; public class Rect extends Shape { //定義成員變量 private double a; private double b; public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } void getArea() { System.out.println("矩形的面積為:"+a*b); } }
package jiekou1; public class Text_mianji { public static void main(String[] args) { Shape yy= new Shape(); //匿名對象 Circle cl= new Circle(5); cl.setCenter(0, 1); cl.setRadius(12); yy.setSp(cl); System.out.println("圓的圓心坐標為:("+cl.x+","+cl.y+")"); System.out.println("半徑為:"+cl.radius); System.out.print("圓的面積為:"); yy.getArea(); System.out.print("圓的周長為:"); yy.getCircumference(); //實例化矩形對象 Rect re = new Rect(); re.setA(20); re.setB(12.5); System.out.println("矩形的長為:"+re.getA()+" 矩形的寬為:"+re.getB()); re.getArea(); } }