题目:运行时多态
有一个抽象类Operation,该类有一个抽象方法,方法名为"计算"。
- 编写该抽象类的两个非抽象子类,第一个子类实现的"计算"方法可以完成两数求和;第二个子类实现的“计算”方法可以完成两数求积。
- 编写一个公共类,其中包含mian方法和static void operate(String a)方法。
- 在main方法中,从键盘输入1时,调用operate方法可以得到两数之和,从键盘上输入2时,调用operate方法可以得到两数之和.
- 对java源程序做出必要的注释。
package com.multipleforms;
//这是抽象方法
public abstract class Operation {
double a;
double b;
public Operation(double a, double b) {// 有参的构造方法
this.a = a;
this.b = b;
}
abstract double calc();
}
package com.multipleforms;
//这是求和的方法
public class Sun extends Operation {
public Sun(double a, double b) {
super(a, b);
}
@Override
double calc() {//两数求和
return a + b;
}
}
package com.multipleforms;
//这是求积的方法
public class accumulate extends Operation {
public accumulate(double a, double b) {
super(a, b);
}
@Override
double calc() {//两数求积
return a * b;
}
}
package com.multipleforms;
import java.util.Scanner;
//这是Test
public class Test {
public static void main(String[] args) {
//从控制台输入
Scanner scanner = new Scanner(System.in);
operate(scanner.nextLine());
}
static void operate(String a) {
Operation obj;
if (a.equals("1")) {
obj = new Sun(2, 3);//运行时多态
System.out.println("两数之和" + obj.calc());
} else if (a.equals("2")) {
obj = new accumulate(3, 3);//运行时多态
System.out.println("两数之积" + obj.calc());
}
}
}
结果: