育哲 發問時間: 電腦與網際網路程式設計 · 1 0 年前

java程式的問題

下面的程式碼定義了CShape父類別,請先閱讀它,然後回答接續的問題:

01 // ex10_9, 利用父類別變數存取子類別成員的練習(一)

02 class CShape // 父類別CShape

03 {

04 public double area()

05 {

06 return 0.0;

07 }

08 }

(a)試定義一個圓形類別CCircle,它繼承自CShape類別,並改寫了父類別的area() method,可用來傳回圓形物件的面積。

(b)試定義一個正方形類別CSquare,它也繼承自CShape類別,同時改寫了父類別的area() method,可用來傳回正方形物件的面積。

(c)試定義一個三角形類別CTriangle,它也繼承自CShape類別,同時改寫了父類別的area() method,可用來傳回三角形物件的面積。

(d)試利用 (a)~(c) 所定義的類別,建立圓形、正方形與三角形物件各一個,其中所有的引數(如半徑、邊長或三角形的底和高等)請自行設定。

(e)試撰寫一個largest() method,可用來找出 (d) 中的所有物件裡,面積的最大值。於本題中,您是否察覺到在找出最大的面積時,在程式的撰寫上有些許不便?

(f) 修改(d)與(e)小題,使得於 (d) 中,所有的子類別物件均是由父類別的陣列變數指向它。

與習題(d)與(e)相比,是否覺得以父類別的變數存取子類別物件的成員,可帶來一些好處?!

請高手幫個忙吧,我不太會寫,3q

已更新項目:

宗尼,謝謝您的回答…

但是,我用JCreator LE這個程式呼叫是…

卻出現很多錯誤,

是不是您有些是沒有寫完呢?

2 個已更新項目:

--------------------Configuration: <Default>--------------------

C:\polytest.java:19: illegal start of expression

}

^

C:\polytest.java:18: ')' expected

for(int i = 0; iSystem.out.println(father[i].area());//印出每個物件的面積

^

3 個已更新項目:

C:\polytest.java:21: <identifier> expected

real_father.setLargest(father);//找出各個物件的面積之最大

^

4 個已更新項目:

C:\polytest.java:22: <identifier> expected

System.out.println("largest: " real_father.getLargest());//印出最大面積

^

C:\polytest.java:24: 'class' or 'interface' expected

}

^

5 個已更新項目:

C:\polytest.java:42: 'class' or 'interface' expected

double getLargest(){

^

C:\polytest.java:45: 'class' or 'interface' expected

}

^

10 errors

Process completed.

6 個已更新項目:

這是以上的錯誤,請享用

我跟我同學試了好久,還是找不出啥原因…

謝謝

7 個已更新項目:

C:\polytest.java:33: ';' expected

for(int i = 0; idouble temp;

^

C:\polytest.java:34: illegal start of expression

if(father[i].area() > father[i 1].area()){

^

^

8 個已更新項目:

C:\polytest.java:39: ')' expected

if(temp > largest) largest = temp;

^

2 個解答

評分
  • 1 0 年前
    最佳解答

    import java.util.*;

    class PolyTest{

    public static void main(String[] args){

    CCircle circle = new CCircle(3.0);//建立circle物件,傳入半徑:3

    SSquare square = new SSquare(2.0, 4.0);//建立square物件,傳入長:2,寬:4

    CTriangle triangle = new CTriangle(2.0, 4.0);//建立triangle物件,傳入底:2,高:4

    System.out.println("=====test class=====");

    System.out.println("circle: "+circle.area()+

    "\nSSquare: "+square.area()+ //印出面積

    "\ntriangle: "+triangle.area());

    System.out.println("============我是分線===========");

    System.out.println("找出最大面積");

    //試著找出物件中,誰的面績是最大值?

    CShape[] father = new CShape[3]; //用父類別建立子類別

    father[0] = new CCircle(33.0); //帶有參數之

    father[1] = new SSquare(100, 4.5);

    father[2] = new CTriangle(1999, 4.2);

    for(int i = 0; i largest) largest = temp;

    }

    }

    double getLargest(){

    return largest;

    }

    }

    //define Circle class

    class CCircle extends CShape{

    private double radius;

    CCircle(){

    radius = 0.0;

    }

    CCircle(double radius){

    this.radius = radius;

    }

    public double area(){

    return (radius * radius) * 3.14;

    }

    }

    //define Square class

    class SSquare extends CShape{

    private double len;

    private double wide;

    SSquare(){

    len = 0.0;

    wide = 0.0;

    }

    SSquare(double len, double wide){

    this.len = len;

    this.wide = wide;

    }

    public double area(){

    return len * wide;

    }

    }

    //define Triangle class

    class CTriangle extends CShape{

    private double bottom_side;

    private double high;

    CTriangle(){

    bottom_side = 0.0;

    high = 0.0;

    }

    CTriangle(double bs, double high){

    this.bottom_side = bs;

    this.high = high;

    }

    public double area(){

    return ( bottom_side * high ) / 2;

    }

    }

    2006-12-10 12:11:59 補充:

    結果

    =====test class=====

    circle: 28.26

    SSquare: 8.0

    triangle: 4.0

    ============我是分線===========

    找出最大面積

    3419.46

    450.0

    4197.900000000001

    largest: 4197.900000000001

    2006-12-10 12:19:03 補充:

    觀念:

    這範例是用到多型的特性,要想瞭解就去參考一下書,都有寫。

    求最大數的方法,我在父類別多加setLargest(CShape[] father)這個method。就是把每個子類別叫過來打~.~(開玩笑!!)

    因為每個子類別都看不到自已的兄弟,只有爸爸看得到,也最瞭解自己的小孩是什麼德性= =。所以,爸爸就叫小孩全部都過來,看他們身上還有剩多少錢???把最有錢的小孩找出來!!

    2006-12-12 15:46:32 補充:

    顯示什麼錯誤????

    程式是執行沒問題呀!!

  • 1 0 年前

    您好我跑出來也是和上面朋友相同的錯誤....????

    請問您是如何跑出來的?

    您的java檔名存成什麼名字?

還有問題?馬上發問,尋求解答。