P100页【4-3】
通过抽象类、抽象方法实现算数四则运算。
package duotai;
//定义Arithmetic抽象类
abstract class Arithmetic{
private double operA,operB;//私有字段,用于存储两个操作数
protected Arithmetic(double a,double b) {//构造方法
operA=a;
operB=b;
}
protected double getA() {//读取操作数字段的get()实例方法
return operA;
}
protected double getB() {
return operB;
}
public abstract String result();//用于返回两个操作数计算结果的抽象方法
}
//定义继承于Arithmetic抽象类的四个子类
class NumAdd extends Arithmetic {//继承于Arithmetic类的子类(加)
public NumAdd(double a,double b) {//构造方法
super(a,b);
}
public String result() {//实现抽象方法
return"两数和为:"+(getA()+getB());//getA()、getB()由父类继承而来
}
}
class NumSub extends Arithmetic {//继承于Arithmetic类的子类(减)
public NumSub(double a,double b) {//构造方法
super(a,b);
}
public String result() {//实现抽象方法
return"两数差为:"+(getA()-getB());//getA()、getB()由父类继承而来
}
}
class NumMulit extends Arithmetic {//继承于Arithmetic类的子类(乘)
public NumMulit(double a,double b) {//构造方法
super(a,b);
}
public String result() {//实现抽象方法
return"两数积为:"+(getA()*getB());//getA()、getB()由父类继承而来
}
}
class NumDivi extends Arithmetic {//继承于Arithmetic类的子类(除)
public NumDivi(double a,double b) {//构造方法
super(a,b);
}
public String result() {//实现抽象方法
if(getB()!=0) {//除数不能为0
return"两数商为:"+(getA()/getB());
}
else {
return"除数不能为零";
}
}
}
//在主类中编写测试代码
public class Test {//主类
public static void main(String[] args) {//主方法
// TODO Auto-generated method stub
NumAdd add=new NumAdd(12,20);//创建子类对象
System.out.println(add.result());//调用子类实现的result()方法
NumSub sub=new NumSub(12,20);
System.out.println(sub.result());
NumMulit mulit=new NumMulit(12,20);
System.out.println(mulit.result());
NumDivi divi=new NumDivi(12,20);
System.out.println(divi.result());
}
}
包和类的组织架构截图:
运行结果截图: