JAVA------第九次作业 接口及接口回调
作者:互联网
题目
利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积
代码
shape.java
/* * 创建图形接口,声明求面积方法 */ package cn; public interface shape { public double getArea(); }
Rectangle.Java
/* * 矩形类,包含两个成员变量一个构造方法,并重写了getArea方法; */ package cn; public class Rectangle implements shape{ double width; double length; public Rectangle(double width, double length){ this.width=width; this.length=length; } public double getArea(){ return width*length; } }
zheng.java
/* * 正方形类继承矩形类,创建有参、无参构造方法和求面积方法 */ package cn; public class zheng extends Rectangle { public zheng(double side){ super(side,side); } public zheng(){ super(0,0); } public double getArea(){ return width*width; } }
Triangle.java
/* * 三角形类,定义成员变量和构造方法和求面积方法 */ package cn; public class Triangle implements shape { double a,b,c; public Triangle(double a, double b, double c){ this.a=a; this.b=b; this.c=c; } public double getArea(){ double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } }
TX.java
/* * 梯形类,包含三个成员变量,两个方法;构造方法和求面积方法 */ package cn; public class Tx implements shape { double a; double b; double h; public Tx(double a,double b,double h){ this.a=a; this.b=b; this.h=h; } public double getArea(){ return (a+b)*h/2; } }
Circle.java
/*定义两个成员变量r,PI 创建有参构造方法 重写实现求面积方法*/ package cn; public class Circle implements shape{ double r; double PI=3.14; public Circle(double r){ this.r=r; } public double getArea() { double area=PI*r*r; return area; } }
Factory.java
/* * 工厂类,定义图形对象,创建getShape()方法,方法中写一个开关方法,返回图形对象 */ package cn; public class Factory { shape shape=null; shape getShape(char c){ switch(c){ case'w':shape=new Rectangle(6,5);break; case'j':shape=new zheng(5);break; case'q':shape=new Triangle(9,4,5);break; case's':shape=new Tx(3,5,9);break; case'l':shape=new Circle(8);break; default:System.out.println("error"); } return shape; } }
Test.java
/*进行输入操作 创建f和cone对象 判断程序是否退出 cone对象调用求体积方法,输出其返回值*/ package cn; import java.util.Scanner; public class Test { public static void main(String[] args) { System.out.println("请输入底面形状对应字母:"); while(true){ Scanner reader=new Scanner(System.in);//进行键盘输入 char c=reader.next().charAt(0);//接收字符 if(c=='T'){ System.out.println("退出"); return; } Factory f=new Factory(); Cone cone=new Cone(f.getShape(c),9); System.out.println(cone.getVolume());//输出体积 } } }
测试运行结果:
标签:JAVA,java,第九次,package,接口,shape,double,new,public 来源: https://www.cnblogs.com/wjq98/p/11640459.html