package ooday05;//求一组图形中的最大面积public class ShapeTest { public static void main(String[] args) { Shape [] shapes = new Shape[4]; //创建父类数组对象 shapes[0] = new Square(1); shapes[1] = new Square(2); shapes[2] = new Circle(1); shapes[3] = new Circle(2); maxArea(shapes); } public static void maxArea(Shape[] shapes ){//静态方法 double max = shapes[0].area(); double Index =0; for(int i =1;i<shapes.length;i++){ double arr =shapes[i].area(); if(arr>max){ max =arr; Index = i; } } System.out.println("最大值="+max+"最大下标="+Index); }}abstract class Shape{//抽象类 protected double c;//受保护的 本类,子类,同包类,周长 public abstract double area();//抽象方法}class Square extends Shape{//创造一个正方形的子类继承Shape父类 public Square(int c){ this.c =c; } public double area(){//公开的,任何类,重写父类方法 return 0.0625*c*c; }}class Circle extends Shape{ public Circle(int c){ this.c =c ; } public double area(){ return 0.0796*c*c; }}
1 回答
逆光之羽
TA贡献55条经验 获得超13个赞
参数就是一组图形对象数组啊?你可以理解为一个盒子里面放了几个图形
maxArea方法中就是建了个临时变量存放最大面积,把其中的图形挨个拿出来,逐个和最大面积临时变量比较、如果比它大说明是已经拿出来的图形中最大的,就把它的赋值给临时变量,如果比它小、说明不是最大的图形就跳过。最后全部比完,临时变量存放的面积就是最大面积了。
程序基本逻辑如下:
Shape [] shapes = new Shape[4]; //创建父类数组对象 shapes[0] = new Square(1); //通过构造方法指定周长值,于是图形面积就确定了,然后将新建的图形放入数组 shapes[1] = new Square(2); //同上 shapes[2] = new Circle(1); //同上 shapes[3] = new Circle(2); //同上 maxArea(shapes); //比对对象数组中图形的面积,并输出
添加回答
举报
0/150
提交
取消