MyGraphi--Java抽象類、抽象方法

 /**
 * @(#)MyGraphi.java
 *圓 circle 菱形 diamond 橢圓 ellipse 矩形 rectangle 長方形的 rectangular
 *梯形 trapezia 梯形不規則四邊形 trapezium 梯形不等邊四邊形 trapezoid 三角形 triangle
 *
 * @author
 * @version 1.00 2009/11/1
 */

abstract class MyGraghic {

 float Square,Girth;
 abstract float reSquare(); //抽象方法
 abstract float reGirth();
 MyGraghic()  { 
  Square=0;
  Girth=0;
 }
 MyGraghic(float s,float g) {
  Square=s;
  Girth=g;
 }
 public static void main(String arg[]) {
   MyRectangle r = new MyRectangle(6,9);
   MyCircle c = new MyCircle(9);
   MyTrapezia tp = new MyTrapezia(6,3,5,8,9);
   MyTriangle tg = new MyTriangle(2,5,6);
   MyDiamond d = new MyDiamond (6,9);
  System.out.println("矩形面積:"+r.reSquare());
  System.out.println("矩形周長:"+r.reGirth());
  System.out.println("圓面積:"+c.reSquare());
  System.out.println("圓周:"+c.reGirth());
  System.out.println("梯形面積:"+tp.reSquare());
  System.out.println("梯形周長:"+tp.reGirth());
  System.out.println("三角形面積:"+tg.reSquare());
  System.out.println("三角形周長:"+tg.reGirth());
  System.out.println("菱形面積:"+d.reSquare());
  System.out.println("菱形周長:"+d.reGirth());

 }
}

class MyRectangle extends MyGraghic {  //矩形
 float rectLen,rectWid;
 MyRectangle(){ 
  super();
  rectLen=0;
  rectWid=0;  
 }
 MyRectangle(float len,float wid){ 
  super(len*wid,(len+wid)*2);
  rectLen=len;
  rectWid=wid;  
 }
 float reSquare(){ //改寫方法返回矩形面積
  Square=rectLen*rectWid;
  return Square;  
 } 
 float reGirth()  { //周長
  Girth=(rectWid+rectLen)*2;
  return Girth;
 }
}

class MyCircle extends MyGraghic { //圓
 float radio;
 MyCircle() {
  super();
  radio=0;  
 }
 MyCircle(float fr) {
  super((float)Math.PI*fr*fr,(float)Math.PI*fr*2);
  radio=fr;  
 }
 float reSquare() {  //改寫方法返回圓面積 
  Square=(float)Math.PI*radio*radio;
  return Square;  
 } 
 float reGirth(){   // 改寫方法,返回圓周 
  Girth=(float)Math.PI*radio*2;
  return Girth;
 }
}
class MyTrapezia extends MyGraghic{  //梯形
    float high,abLen,undLen,blen,clen;
 MyTrapezia (){
  super();
  high = abLen = undLen = 0;
  clen=blen=0;
 }
 MyTrapezia (float h,float a,float u,float b,float c){
  super((a+b)*h/2,a+b+c+u);
  high = h;
  abLen = a;
  undLen = u;
  blen=b; clen=c;
 }
 float reSquare() {  //改寫方法返回梯形面積 
  Square=(abLen+undLen)*high/2;
  return Square;  
 } 
 float reGirth(){   // 改寫方法,返回梯形周長 
  Girth=abLen+undLen+blen+clen;
  return Girth;
 }
 }

class MyTriangle extends MyGraghic{  //三角形
    float aLen,bLen,cLen;    //需要考慮三邊長的關係:還未實現
 MyTriangle(){
  super();
  aLen=bLen=cLen=0;
 }
 MyTriangle(float a,float b,float c){
  super((float)Math.sqrt(((a+b+c)/2)*((a+b+c)/2-a)*((a+b+c)/2-b)*((a+b+c)/2-c)),a+b+c);
  aLen=a;
  bLen=b;
  cLen=c;
 }
 float reSquare() {  //改寫方法返回三角形面積 
  Square=(float)Math.sqrt((aLen + bLen + cLen)/2*((aLen + bLen + cLen)/2-aLen)
   *((aLen + bLen + cLen)/2-bLen)*((aLen + bLen + cLen)/2-cLen));
  return Square;  
 } 
 float reGirth(){   // 改寫方法,返回三角形周長 
  Girth=aLen + bLen + cLen;
  return Girth;
 }
}
class  MyDiamond extends MyGraghic{ //菱形
    float slen,llen;
 MyDiamond (){
  super();
  slen=llen=0;
 }
 MyDiamond (float l,float s){
  super(l*s,2*(float)Math.sqrt(s*s+l*l));
  slen=s;
  llen=l;
 }
 float reSquare() {  //改寫方法返回三角形面積 
  Square = slen*llen;
  return Square;  
 } 
 float reGirth(){   // 改寫方法,返回三角形周長 
  Girth=2*(float)Math.sqrt(slen*slen+llen*llen);
  return Girth;
 }
  }

/**
** 聲明抽象方法,而因爲子類不是抽象類,所以要改寫抽象方法
   super() 指代父類,將類的成員方法定義
   MyDiamond()用兩種方式構造方法:有參數和無參數,無參數是對方法成員的初始化。
*/

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章