Java 实验二 面向对象程序设计
定义一个运算接口Calculate,它定义了四种方法:加(add)、减(sub)、乘(mul)、除(div)。
定义一个复数类Complex,它具有实部和虚部、构造方法、set方法(重新设置复数的值),以及public String ToString()方法
(实现复数的格式化输出:如 r3=3+4i 题目要求必须按照该种格式输出)。
定义一个高级复数类advComplex,它继承复数类Complex,实现运算接口Calculate定义的加、减、乘、除四种方法。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL3MTOwIDO1kTMyETMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
interface Calculate{ //定义一个运算接口
Complex add(Complex r);
Complex sub(Complex r);
Complex mul(Complex r);
Complex div(Complex r); //定义四种方法:加减乘除
}
class Complex{ //定义一个复数类Complex,具有实部和虚部
double x,y;
public Complex(double r,double i){ //构造方法
x=r;y=i;
}
public void set(double r,double i){ //设置方法(重新设置复数的值)
x=r;y=i;
}
public String toString(){ //对象描述信息(实现复数的格式化输出:如r3=3+4i)
if(y>0)
if(x==0)
return y+"i";
else
return x+"+"+y+"i";
else if(y==0)
return x+"";
else
if(x==0)
return y+"i";
return x+""+y+"i";
}
}
public class advComplex extends Complex //定义一个高级复数类advComplex,它继承复数类Complex
implements Calculate{ //实现Calculate接口(implements关键词)
public advComplex(double r,double i){
super(r,i); //调用父类构造方法
}
public Complex add(Complex r2){ //将复数与r2相加
return new Complex(x+r2.x,y+r2.y);
}
public Complex sub(Complex r2){ //将复数与r2相减
return new Complex(x-r2.x,y-r2.y);
}
public Complex mul(Complex r2){
double a=x*r2.x-y*r2.y;
double b=y*r2.x+x*r2.y;
return new Complex(a,b);
}
public Complex div(Complex r2){
if(r2.x==0&&r2.y==0){
System.out.println("Number Divided is 0,Error!");
System.exit(0);
}
double c=r2.x*r2.x+r2.y*r2.y;
double a=(x*r2.x+y*r2.y)/c;
double b=y*r2.x-x*r2.y;
return new Complex(a,b);
}
public static void main(String args[]){
advComplex r1=new advComplex(6,6);
advComplex r2=new advComplex(-6,8);
System.out.println("r1="+r1+",r2="+r2);
Complex r3=r1.add(r2); //r1+r2=r3
System.out.println("r1+r2="+r3);
r3=r1.sub(r2); //r1-r2=r3
System.out.println("r1-r2="+r3);
r1.set(1,2);
r2.set(1,-2);
System.out.println("r1="+r1+",r2="+r2);
Complex r4=r1.mul(r2); //r4=r1*r2
System.out.println("r1*r2="+r4);
r4=r1.div(r2); //r4=r1/r2
System.out.println("r1/r2="+r4);
}
}