当前位置:   article > 正文

【java】继承与多态 接口练习_练习-java继承和多态之接口

练习-java继承和多态之接口

题目:

 定义容器Container接口。模拟实现一个容器类层次结构,并进行接口的实现、抽象方法重写和多态机制测试。各容器类实现求面积、周长的方法。

  1. 定义接口Container:
  2. 属性:
  3. public static final double pi=3.14 ;
  4. 抽象方法:
  5. public abstract double area();
  6. public abstract double perimeter();
  7. static double sumofArea(Container c[]);
  8. static double sumofPerimeter(Container c[]);
  9. 其中两个静态方法分别计算返回容器数组中所有对象的面积之和、周长之和;
  10. 定义Rectangle类、Circle类均实现自Container接口。
  11. Rectangel类(属性:长,宽double类型)、Circle类(属性:半径,double类型)。

输入格式:

第一行n表示对象个数,对象类型用Rectangle、Circle区分,Rectangle表示长方形对象,后面输入长,宽,输入Circle表示圆对象,后面是输入半径。

输出格式:

分别输出所有容器对象的面积之和、周长之和,结果保留小数点后2位。

输入样例:

在这里给出一组输入。例如:

4

Circle

15.7

Rectangle

23.5 100

Circle

46.8

Rectangle

17.5 200

输出样例:

在这里给出相应的输出。例如:

周长之和:56771.13

面积之和:472290.12

  1. package com.experiment.twoT2;
  2. public class Circle implements Container{
  3. private double radius;
  4. public Circle(){
  5. this.radius=0;
  6. }
  7. public Circle(double radius){
  8. this.radius=radius;
  9. }
  10. public double area(){
  11. return Math.pow(this.radius,2)*pi;
  12. }
  13. public double perimeter(){
  14. return 2*pi*this.radius;
  15. }
  16. }
  1. package com.experiment.twoT2;
  2. public interface Container {
  3. //接口中的"变量"默认都是 "public static final"类型,即为常量
  4. double pi=3.14; //在接口里面定义常量不用final修饰,接口里面定义的常量本来就时不可变的
  5. double area(); //接口里面定义的抽象函数也不用abstract修饰,本来就是抽象的
  6. double perimeter();
  7. static double sumofArea(Container c[]) {
  8. double sumofArea=0.0;
  9. for(int i=0;i<c.length;i++) {
  10. sumofArea+=c[i].area();
  11. }
  12. return sumofArea;
  13. }
  14. static double sumofPerimeter(Container c[]) {
  15. double sumofPerimeter=0.0;
  16. for(int i=0;i<c.length;i++) {
  17. sumofPerimeter+=c[i].perimeter();
  18. }
  19. return sumofPerimeter;
  20. }
  21. }
  1. package com.experiment.twoT2;
  2. public class Rectangle implements Container{
  3. private double length;
  4. private double width;
  5. public Rectangle(){
  6. this.length=0;
  7. this.width=0;
  8. }
  9. public Rectangle(double length,double width){
  10. this.length=length;
  11. this.width=width;
  12. }
  13. public double area(){
  14. return this.length*this.width;
  15. }
  16. public double perimeter(){
  17. return (this.length+this.width)*2;
  18. }
  19. }
  1. package com.experiment.twoT2;
  2. import java.util.Scanner;
  3. public class test {
  4. public static void main(String[] args) {
  5. int i=0;
  6. Scanner sc=new Scanner(System.in);
  7. int n=sc.nextInt();
  8. Container a[]=new Container[n];
  9. for(i=0;i<a.length;i++){
  10. String name=sc.next();
  11. if(name.equals("Circle")) {
  12. //double radius=sc.nextDouble();
  13. a[i]=new Circle(sc.nextDouble()); //在接口数组中传入类与参数
  14. }
  15. else if(name.equals("Rectangle")) {
  16. /*double length = sc.nextDouble();
  17. double width = sc.nextDouble();*/
  18. a[i]=new Rectangle(sc.nextDouble(), sc.nextDouble());
  19. }
  20. else{
  21. System.out.println("输入错误,请重新运行该程序!");
  22. break;
  23. }
  24. }
  25. System.out.printf("周长之和:%.2f%n", Container.sumofPerimeter(a));
  26. System.out.printf("面积之和:%.2f%n", Container.sumofArea(a));
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/773062
推荐阅读
相关标签
  

闽ICP备14008679号