第壹個題目是不是少了點什麽信息,這麽寫出類來好像沒什麽意義啊,連個動作都沒執行!我這裏是按照題目的要求寫的代碼,壹***是2個文件。
package?baidu;?
/**?
*?文件名:Engine.java *?@author? *?@version?1.0,創建時間:2012-4-15?下午06:44:18? *?@since?jdk1.6 *?引擎類,它有壹個引擎類型的屬性type, *?其值可能為噴氣引擎(whiff)或螺旋槳引擎(airscrew), */public?class?Engine
{
//壹個飛機引擎的私有屬性,因為引擎的可能性只有兩種,為了限制可能性,所以此處使用枚舉類型
private?enum?type{whiff,airscrew};
}
package?baidu;?
/**?
*?文件名:Airplane.java *?@author? *?@version?1.0,創建時間:2012-4-15?下午06:43:30? *?@since?jdk1.6 *?飛機類,最基礎的類。它有1~4個引擎 */public?class?Airplane
{
//飛機的4個引擎,此處分別命名為engine1~4
private?Engine?engine1;
private?Engine?engine2;
private?Engine?engine3;
private?Engine?engine4;
/**
?*?主函數中來執行操作*/
public?static?void?main(String[]?args)
{
//定義初始化兩個對象噴氣式飛機(jet)和螺旋槳飛機(PDAirplane)
Airplane?jetAirplane?=?new?Airplane();
Airplane?PDAirplane?=?new?Airplane();
}
}?
第二題還好,只是有個問題:java裏面的接口明明比抽象類好用,擴展性也更好,為什呢不用接口呢?所以我只能說妳出了2個題目都是莫名其妙的。下面是我按照題目寫的代碼,有3個文件,分別代碼圖形、長方形、三角形:
package?baidu;?
/**?
*?文件名:Polygon.java *?@version?1.0,創建時間:2012-4-15?下午06:54:50? *?@since?jdk1.6 *?抽象類,代表壹個圖形,當做是接口處理吧,子類要實現的接口就是getArea()方法。 */public?abstract?class?Polygon
{
//該圖形的面積
protected?double?area;
//這裏聲明方法,不定義
public?abstract?void?getArea();
/**
?*?這裏弄幾個測試用例來測試壹下
?*?@param?args
?*/
public?static?void?main(String[]?args)
{
Polygon?changfangPolygon?=?new?Rectangle(10,?10.5);
changfangPolygon.getArea();
Polygon?sanjiaopPolygon?=?new?Triangle(4,?5,?3);
sanjiaopPolygon.getArea();
}
}
package?baidu;?
/**?
*?文件名:Rectangle.java *?@version?1.0,創建時間:2012-4-15?下午06:57:27? *?@since?jdk1.6 *?矩形類,繼承了圖形類的方法和接口。 */public?class?Rectangle?extends?Polygon
{
//長方形的長度和寬度
private?double?length;
private?double?width;
/**
?*?構造方法,用長度和寬度來初始化這個長方形
?*?@param?len?長方形的長度
?*?@param?width?長方形的寬度
?*/
public?Rectangle(double?len,double?width)
{
//為了防止輸入的數據有負數什麽的,要把他們都轉成正數
this.length?=?Math.abs(len);
this.width?=?Math.abs(width);
}
/**重寫父類的方法,計算出面積,輸出結果到控制臺*/
@Override
public?void?getArea()
{
/*這裏面是使用了父類的area屬性,通過protected繼承了下來*/
area?=?this.length*this.width;
System.out.println("長方形長度:"+this.length+",寬度:"+this.width+",面積:"+area);
}
}
package?baidu;?
/**?
*?文件名:Triangle.java *?@version?1.0,創建時間:2012-4-15?下午07:11:09? *?@since?jdk1.6 *?三角形類,繼承了圖形類的方法 */public?class?Triangle?extends?Polygon
{
/**三角形的三邊,分別命名為abc好了,隨便*/
private?double?edgeA;
private?double?edgeB;
private?double?edgeC;
/**
?*?三角形的構造函數,首先驗證輸入的數據是否合法才初始化
?*?@param?a
?*?@param?b
?*?@param?c
?*/
public?Triangle(double?a,double?b,double?c)
{
/*臨時變量,存儲輸入的abc三條邊*/
double?aa?,bb?,cc;
//是否是三角形的判斷
boolean?isTriangle;
//先保證三條邊都是正數,使用取絕對值的方法
aa?=?Math.abs(a);
bb?=?Math.abs(b);
cc?=?Math.abs(c);
//驗證兩邊之和是否大於第三邊
isTriangle?=?(aa+bb>cc)&&(bb+cc>aa)&&(aa+cc>bb);
if(!isTriangle)
{
System.out.println("您輸入的三邊有錯誤,兩邊之和大於第三邊!");
this.edgeA?=?0;
this.edgeB?=?0;
this.edgeC?=?0;
return?;
}
this.edgeA?=?aa;
this.edgeB?=?bb;
this.edgeC?=?cc;
}
/*?(non-Javadoc)
?*?@see?baidu.Polygon#getArea()
?*?重載父類的方法,計算出圖形的面積,並且輸出到控制臺
?*?三角形的面積計算公式
?*?(海倫公式)(p=(a+b+c)/2)
S=√[p(p-a)(p-b)(p-c)]
?*/
@Override
public?void?getArea()
{
double?p;
p?=(this.edgeA+this.edgeB+this.edgeC)/2;
area?=?Math.sqrt(p*(p-edgeA)*(p-edgeB)*(p-edgeC));
System.out.println("三角形長度:"+this.edgeA+","+this.edgeB+","+this.edgeC+",面積:"+area);
}
}