问答详情
源自:10-3 Java 中的抽象类

关于4-3抽象类课后练习的问题

现有Shape图形类,用Rectangle矩形和Circle圆形子类,求图形的周长和面积。

能不能实现在Initail类里,随意输入任意数字,得到不同的矩形面积和周长,得到不同的圆形面积和周长?

我做的只能实现固定半径和长还有宽,求得矩形面积和周长,圆形的面积和周长

提问者:慕数据3565510 2017-05-12 21:59

个回答

  • 悦然无殇
    2017-05-20 12:18:56
    已采纳

    //父类代码。
    public abstract class shape {
        public abstract void length();
        public abstract void square();
    }
    //长方形子类代码。
    public class rectangle extends shape {
        Scanner scan1=new  Scanner(System.in);
        int l=scan1.nextInt();
        Scanner scan2=new  Scanner(System.in);
        int w=scan2.nextInt();
            public void length() {
            int  length=2*(l+w);
            System.out.println("长方形的周长为:"+length);
        }
        public void square() {
            int  square=w*l;
            System.out.println("长方形的面积为:"+square);
        }
    }
    //圆形子类代码。
    public class circle extends shape {
        Scanner scan1=new  Scanner(System.in);
        double r=scan1.nextDouble();
        public void length() {
            double length=2*3.14*r;
            System.out.println("圆形的周长为:"+length);
        }
        public void square() {
            double square=3.14*r*r;
            System.out.println("圆形的面积为:"+square);
        }
    }
    //测试类代码。
    public class test {
        public static void main(String[] args) {
            System.out.println("请输入您要查询的图形类型:1代表长方形,2代表圆形。");
            Scanner input =new Scanner(System.in);
            int num=input.nextInt();
            switch (num) {
            case 1:
                System.out.println("请依次输入长方形的长度和宽度:");
                shape shp1=new rectangle();
                shp1.length();
                shp1.square();         
                break;
            case 2:
                System.out.println("请输入圆形的半径:");
                shape shp2=new circle();
                shp2.length();
                shp2.square();         
                break;
            default:
                System.out.println("您输入的数值有误,请重新输入。");
            }
        }
    }

    这是我刚发布的问题里面的代码,能运行,只是有点小瑕疵:一次只能计算一种图形,下一次需要重新运行才可以。

  • qq_木子李i_1
    2017-05-23 21:25:55

      Scanner scan1=new  Scanner(System.in);

        int l=scan1.nextInt();

        Scanner scan2=new  Scanner(System.in);

    这些表达的什么内容啊 ?


  • 慕婉清0689395
    2017-05-13 11:39:15

    可以啊,通过父类引用子类对象,再通过instanceof判断它属于哪个类,然后强制转换,调用相应的方法得到周长和面积

  • 清闲的水滴
    2017-05-13 00:06:41

    需要增加输入语句,可以按照这样的逻辑:1.选择矩形还是圆(可以用输入1代表矩形,输入2代表圆);2.输入长宽或者半径3.输出周长和面积