Java 接口及接口回调_Chris

Posted chris-wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 接口及接口回调_Chris相关的知识,希望对你有一定的参考价值。

题目:

  利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。

代码:

1、Test.java

 1 /**
 2  * 测试类,包含一个主方法;
 3  * 调用求体积方法输出;
 4  */
 5 package cn.edu.ccut.object3;
 6 
 7 import java.util.Scanner;
 8 public class Test 
 9 
10     public static void main(String[] args) 
11         char c;
12         while(true)
13             System.out.println("请输入柱体底的形状(‘j‘矩形、‘s‘三角形、‘z‘正方形、‘t‘梯形、‘y‘圆形、‘F‘结束程序):");
14             Scanner reader = new Scanner(System.in);
15             c = reader.next().charAt(0); //c接受字符型输入;
16             if(c == ‘F‘)     //退出程序标志;
17                 System.out.println("程序结束!");
18                 break;
19             
20             factory f = new factory();
21             Cone cone = new Cone(f.ctrl_di(c) , 5); //定义矩形对象,根据用户输出控制底,高为5;
22             System.out.println("柱体体积是:"+cone.getV());
23         
24     
25 
26 

2、factory.java

 1 /**
 2  * 工厂类,实现简单工厂模式,包含一个方法;
 3  * ctrl_di实现了根据用户输入换底;
 4  */
 5 package cn.edu.ccut.object3;
 6 
 7 public class factory 
 8     Shape shape = null;
 9     public Shape ctrl_di(char c) //实现了根据用户输入换底;
10         switch(c)
11         case ‘j‘:shape = new Rec(3,4);break;
12         case ‘s‘:shape = new Triangle(3,4,5);break;
13         case ‘z‘:shape = new Zheng(2);break;
14         case ‘t‘:shape = new Trapezoid(4,6,7);break;
15         case ‘y‘:shape = new Circle(3);break;
16         default:System.out.println("error");        
17         
18         return shape;
19     
20 

3、Shape.java

1 /**
2  * 图形接口;
3  * 定义了一个计算面积的抽象方法getArea;
4  */
5 package cn.edu.ccut.object3;
6 
7 public interface  Shape 
8     public double getArea(); //抽象方法计算面积;
9 

4、Rec.java

 1 /**
 2  * 矩形类,使用了图形接口,包含两个成员变量一个构造方法,并重写了getArea方法;
 3  * 两个成员变量分别代表举行的长和宽;
 4  * 构造方法初始化,getArea计算面积;
 5  */
 6 package cn.edu.ccut.object3;
 7 
 8 public class Rec implements Shape 
 9     double a;
10     double b;
11     Rec(double a , double b)
12         this.a = a;
13         this.b = b;
14     
15     public double getArea()
16         return (a*b);
17     
18 

5、Zheng.java

 1 /**
 2  * 正方形类,继承了矩形类,包含两个方法;
 3  * 构造方法初始化,getArea计算面积
 4  */
 5 package cn.edu.ccut.object3;
 6 
 7 public class Zheng extends Rec 
 8     Zheng(double a)
 9         super(a, a); //利用super调用父类构造方法;
10     
11 
12     public double getArea() //方法重写;
13         return (a*a);
14     
15 

6、Circle.java

 1 /**
 2  * 圆类,使用了图形接口,包含一个成员变量,两个方法;
 3  * 成员变量r为半径;
 4  * 构造方法初始化,重写了getArea方法;
 5  */
 6 package cn.edu.ccut.object3;
 7 
 8 public class Circle implements Shape
 9     double r;
10     
11     public Circle(double r)
12         this.r = r;
13     
14     public double getArea()
15         return (Math.PI*r*r);
16     
17 

7、Triangle.java

 1 /**
 2  * 三角形类,使用了图形接口,包含了三个成员变量,两个方法;
 3  * 成员变量a,b,c分别代表三角形的三个边;
 4  * 构造方法初始化,重写了getArea方法;
 5  */
 6 package cn.edu.ccut.object3;
 7 
 8 public class Triangle implements Shape
 9     double a;
10     double b;
11     double c;
12     
13     public Triangle (double a , double b , double c)
14         this.a = a;
15         this.b = b;
16         this.c = c;
17     
18     public double getArea()
19         double p = (a + b + c) / 2;
20         return Math.sqrt(p * (p - a) * (p - b) * (p - c));
21     
22 

8、Trapezoid.java

 1 /**
 2  * 梯形类,使用了图形接口,包含三个成员变量,两个方法;
 3  * 成员变量a,b代表梯形的上底和下底,high代表高;
 4  * 构造方法,重写getArea;
 5  */
 6 package cn.edu.ccut.object3;
 7 
 8 public class Trapezoid implements Shape
 9     double a;
10     double b;
11     double high;
12     
13     public Trapezoid(double a , double b , double high)
14         this.a = a;
15         this.b = b;
16         this.high = high;        
17     
18     public double getArea()
19         return (((a + b) * high) / 2);
20     
21 

9、Cone.java

 1 /**
 2  * 柱体类,两个成员变量,三个方法;
 3  * 成员变量shape代表底,high代表高;
 4  * 构造方法初始化,getV计算柱体体积,setDi可用于换底;
 5  */
 6 package cn.edu.ccut.object3;
 7 
 8 public class Cone 
 9     Shape shape;
10     double high;
11     public Cone(Shape shape , double high)
12         this.shape = shape;
13         this.high = high;
14     
15     public double getV()
16         return (shape.getArea()*high);
17     
18     public void setDi(Shape shape) //利用修改器换底
19         this.shape = shape;
20     
21 

运行结果:

技术图片

 

 

 技术图片

技术图片

 

以上是关于Java 接口及接口回调_Chris的主要内容,如果未能解决你的问题,请参考以下文章

java 接口的回调

接口及接口回调

给个Java接口回调的例子

有关接口回调的java题,求解。

Java中啥是接口回调?

Java--回调接口