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)
方法来完成加减乘除功能
package D11;
interface Compute {
double compute(double a, double b);
}
class ShowCompute {
/*
定义工具方法,事项,对两个操作数a和b的计算(加减乘除)
至于,具体对a和b执行哪种计算,有方法接收的,具体的Compute接口子类对象决定
*/
public static double calculate(Compute com,double a, double b) {
return com.compute(a, b);
}
}
public class Q1 {
public static void main(String[] args) {
double a = 10;
double b = 2.5;
//所有的计算结果,都是通过ShowCompute类的calculate方法完成的
// 不同的Compute匿名内部类对象,决定了不同的计算方式(比如,加减乘除)
// 执行加法 创建了执行加法操作的Compute接口匿名内部类对象
double add = ShowCompute.calculate(new Compute() {
@Override
public double compute(double a, double b) {
return a + b;
}
}, a, b);
System.out.println(add);
// 执行减法 创建了执行减法操作的Compute接口匿名内部类对象
double minus = ShowCompute.calculate(new Compute() {
@Override
public double compute(double a, double b) {
return a - b;
}
}, a, b);
System.out.println(minus);
// 执行乘法 创建了执行乘法操作的Compute接口匿名内部类对象
double multi = ShowCompute.calculate(new Compute() {
@Override
public double compute(double a, double b) {
return a * b;
}
}, a, b);
System.out.println(multi);
// 执行除法 创建了执行除法操作的Compute接口匿名内部类对象
double divide = ShowCompute.calculate(new Compute() {
@Override
public double compute(double a, double b) {
return a / b;
}
}, a, b);
System.out.println(divide);
}
}