1.
a. 定义一个接口Compute,用来完成计算器的功能,比如最简单的加减乘除功能
interface Compute { double compute(double a, double b) }
b. 定义一个ShowCompute类,里面定义一个工具方法compute(Compute com,double a, double b)
该方法可以执行,两个double类型数据的加减乘除
(也就是需要定义不同的Compute接口的子类,实现具体的加减乘除功能,当执行该方法时,
传递不同的子类对象,就可以完成不同的计算)
编写一个测试类,
通过调用ShowCompute类的compute(Compute com,double a, double b)
方法来完成加减乘除功能
2. 根据注释填写(1), (2),(3)处的代码
1 public class Test { 2 public static void main(String[] args){ 3 // 初始化bean1 4 (1) 5 bean1.i++; 6 // 初始化bean2 7 (2) 8 bean2.j++; 9 //初始化bean3 10 (3) 11 bean3.k++; 12 } 13 14 class Bean1 { 15 public int i = 0; 16 } 17 18 static class Bean2 { 19 public int j = 0; 20 } 21 } 22 23 class Bean { 24 class Bean3 { 25 public int k = 0; 26 } 27 }
参考答案:
1.
1 public interface Compute { 2 double compute(double a, double b); 3 } 4 5 class ShowCompute { 6 /* 7 * 定义工具方法,事项,对两个操作数a和b的计算(加减乘除) 至于,具体对a和b执行哪种计算,有方法接收的,具体的Compute接口子类对象决定 8 */ 9 public static double calculate(Compute com, double a, double b) { 10 return com.compute(a, b); 11 } 12 } 13 14 public class Work1 { 15 16 public static void main(String[] args) { 17 18 double a = 10; 19 double b = 2.5; 20 21 // 所有的计算结果,都是通过ShowCompute类的calculate方法完成的 22 // 不同的Compute匿名内部类对象,决定了不同的计算方式(比如,加减乘除) 23 24 // 执行加法 创建了执行加法操作的Compute接口匿名内部类对象 25 double add = ShowCompute.calculate(new Compute() { 26 @Override 27 public double compute(double a, double b) { 28 return a + b; 29 } 30 }, a, b); 31 32 // 执行减法 创建了执行减法操作的Compute接口匿名内部类对象 33 double minus = ShowCompute.calculate(new Compute() { 34 @Override 35 public double compute(double a, double b) { 36 return a - b; 37 } 38 }, a, b); 39 40 // 执行乘法 创建了执行乘法操作的Compute接口匿名内部类对象 41 double multi = ShowCompute.calculate(new Compute() { 42 @Override 43 public double compute(double a, double b) { 44 return a * b; 45 } 46 }, a, b); 47 48 // 执行除法 创建了执行除法操作的Compute接口匿名内部类对象 49 double divide = ShowCompute.calculate(new Compute() { 50 @Override 51 public double compute(double a, double b) { 52 return a / b; 53 } 54 }, a, b); 55 } 56 }
2.