我是新手,今天看书遇到了个问题,想向各位请教下,
例如:如果B,C和D类都继承了父类A,也同时覆盖父类里的area()方法,用来反回物件的面积,试想,如果我们创建好几个不同子类的对象,而想利用largest()方法找出这几个对象最大的面积时,此时若先声明A的数组变量,再将数组变量指向这些对象,然后将整个数组传入largest()方法找出面积的最大值,如此用起来是不是方便许多呢?
参考代码"
     A a[] = new A[5];  //声明A的数组变量;
     a[0] = new A(12);  //创建圆形对象(1);
     a[1] = new A(21);  //创建贺形对象(2);
     a[2] = new A(15);  //创建正方形对象;
     a[3] = new A(12,7);//创建三角形对象(1);
     a[4] = new A(3,18);//创建三角形对象(2);
     A.largest(a);      //比较对象面积的大小,并返回最大者;
请高手按他的说法将代码帮我补全..我想看看父类变量掻向子类对象的好处!!!!!!!!!按他的要求写啊.我想知道这个怎么写.谢谢

解决方案 »

  1.   

    这个不难啊,是不是我理解错意思了    public A largest(a){
            if(null == a || a.length==0)return null;
            A max = a[0];     //假设第一个最大
            for(int i=1;i< a.length;i++){
                if(a[i].area() > max) max = a[i];   //依次比较,面积大的 记录为最大
            }
            return max;
        }
      

  2.   

    代码补全好吗,从父类开始.一直到main方法ok?
      

  3.   


    public class Graph { public double area; public boolean compare(Graph o1) {
    return this.area > o1.area ? true : false;
    }}class Util { public static void main(String[] args) {
    Graph[] gs = new Graph[10];
    for (int i = 0; i < gs.length; i++) {
    //分别初始化各个图形
    }
    //这里的 result 就是需要的结果
    Graph result = largest(gs);
    }

    public static Graph largest(Graph[] arr) {
    Graph result = arr[0];
    for (int i = 1; i < arr.length; i++) {
    if (result.compare(arr[i])) {
    result = arr[i];
    }
    }
    return result;
    }
    }class Triangle extends Graph {}class OtherGraph extends Graph {}
      

  4.   

    快来高手写啊,我主要是看父类的构造方法体中写什么代码.和那个父类的area函数里面写什么.计算面积是在父类中完成.还是在子类中完成的.
      

  5.   

    area函数不用,直接在构造函数里给area赋值,重载下构造就行了