一、今日学习内容
多继承:
1、例题:客货两用车
1 //接口1:Car
2 public interface Car {
3 public void setCar(int p,int s);
4 public void show1();
5 }
6 //接口2:Wagon
7 public interface Wagon {
8 public void setWagon(int p,int l);
9 public void show2();
10 }
11 //实现类:
12 public class StationWagon implements Car,Wagon{
13 private int power,seat,load;
14 public void setCar(int p,int s) {
15 power=p;
16 seat=s;
17 }
18 public void show1() {
19 System.out.println("car power:"+power);
20 System.out.println("seat:"+seat);
21 }
22 public void setWagon(int p,int l) {
23 power=p;
24 load=l;
25 }
26 public void show2() {
27 System.out.println("wagon power:"+power);
28 System.out.println("load:"+load);
29 }
30 public void show() {
31 System.out.println("Sation Wagon:");
32 }
33 public static void main(String[] args) {
34 StationWagon SW=new StationWagon();
35 SW.setCar(200,9);
36 SW.setWagon(200, 100);
37 SW.show();
38 SW.show1();
39 SW.show2();
40 }
41 }
2、定义一个Point类,有两个数据成员:x和y, 分别代表x坐标和y坐标,并有若干成员函数。 定义一个友元函数Distance(), 用于求两点之间的距离。
1 import java.util.Scanner;
2 public class Point {
3 private double x;
4 private double y;
5 public void input() {
6 Scanner in=new Scanner(System.in);
7 this.x=in.nextDouble();
8 this.y=in.nextDouble();
9 }
10 public double getX() {
11 return this.x;
12 }
13 public double getY() {
14 return this.y;
15 }
16 public void distance(Point p) {
17 double d;
18 d=Math.sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
19 System.out.printf("%.2f",d);
20 }
21 public static void main(String[] args) {
22 Point p1=new Point();
23 Point p2=new Point();
24 System.out.print("请输入点1:");
25 p1.input();
26 System.out.print("请输入点2:");
27 p2.input();
28 p1.distance(p2);
29 }
30 }
3、复数类
声明一个复数类Complex(类私有数据成员为double型的real和image)
定义构造函数,用于指定复数的实部与虚部。
定义取反成员函数,调用时能返回该复数的相反数(实部、虚部分别是原数的相反数)。
定义成员函数Print(),调用该函数时,以格式(real, image)输出当前对象。
编写加法友元函数,以复数对象c1,c2为参数,求两个复数对象相加之和。
主程序实现:
(1)读入两个实数,用于初始化对象c1。
(2)读入两个实数,用于初始化对象c2。
(3)计算c1与c2相加结果,并输出。
(4)计算c2的相反数与c1相加结果,并输出。
1 //复数类
2 import java.util.Scanner;
3 public class Complex {
4 private double real; // 实部
5 private double image; // 虚部
6 //无参构造函数
7 public Complex() {
8 }
9 //有参构造函数
10 public Complex(double real, double image) {
11 this.real = real;
12 this.image = image;
13 }
14 //取反成员函数
15 public Complex oppo() {
16 double a=-this.real;
17 double b=-this.image;
18 Complex result=new Complex(a,b);
19 return result;
20 }
21 //输出复数
22 public void print() {
23 System.out.println("("+real+","+image+")");
24 }
25 // 复数的加法
26 public static Complex add(Complex c1,Complex c2) {
27 double real1 = c1.real;
28 double image1 = c1.image;
29 double real2=c2.real;
30 double image2=c2.image;
31 double a = real1 + real2;
32 double b = image1 + image2;
33 Complex c = new Complex(a, b);
34 return c;
35 }
36 public static void main(String[] args) {
37 Scanner in=new Scanner(System.in);
38 System.out.print("请输入复数1的实部和虚部:");
39 double a1=in.nextDouble();
40 double a2=in.nextDouble();
41 Complex c1=new Complex(a1,a2);
42 System.out.print("请输入复数2的实部和虚部:");
43 double b1=in.nextDouble();
44 double b2=in.nextDouble();
45 Complex c2=new Complex(b1,b2);
46 Complex m=new Complex();
47 Complex n=new Complex();
48 m=add(c1,c2);
49 System.out.println("复数1+复数2:");
50 m.print();
51 n=add(c1,c2.oppo());
52 System.out.println("复数1+复数2的相反数:");
53 n.print();
54 }
55 }
二、遇到的问题
无。
三、明日计划
继续完成相关例题的验证。
