2021.12.03 __每日一题__面向对象~子父类
建立一个Po(点)类,包含数据成员X,Y(坐标点),构造器;
以Po为父类,实现一个Circle(圆)类作为子类,增加数据成员R(半径),构造器、求圆面积方法getArea(),求圆周长方法getCircumference();
再以Cicle类为父类,实现出一个Cylinder (圆柱体〕子类,增加数据成员H(高),构造器,求圆柱体积方法getVolumn()、求圆柱表面积方法getArea(),请编写程序实现。(圆周率取3.14)
要求:
自定义各个类的toString方法,要求当上面三个类的对象创建完毕后,我们直接打印这个三个对象可以显示这个对象的完整信息
如打印Circle类的对象会输出:
Circle{X=1,Y=2,R=1,circumference=6.28,area=3.14
友情提示X,Y,R应均为double类型;
1 package Works; 2 3 import java.util.Scanner; 4 5 public class Day03 { 6 public static void main(String[] args) { 7 Circle circle = new Circle(1 ,1); 8 Cylinder cylinder = new Cylinder(1,1); 9 circle.setR(); 10 System.out.println("圆的属性 : " + circle.toString()); 11 System.out.println("**********************************************************"); 12 cylinder.setR(); 13 cylinder.setH(); 14 System.out.println("圆柱的属性 : " + cylinder.toString()); 15 } 16 } 17 18 class Po{ 19 public static final double PI = 3.14; 20 21 private double X; 22 private double Y; 23 24 public Po(int x, int y) { 25 this.X = x; 26 this.Y = y; 27 } 28 29 public double getX() { 30 return X; 31 } 32 33 public double getY() { 34 return Y; 35 } 36 37 @Override 38 public String toString() { 39 return "Po{" + "X=" + X + ", Y=" + Y + '}'; 40 } 41 } 42 43 class Circle extends Po{ 44 private double R; 45 46 Scanner scanner = new Scanner(System.in); 47 public Circle(int x, int y) { 48 super(x, y); 49 } 50 51 public void setR(double r){ 52 R = r; 53 } 54 public void setR() { 55 double r; 56 System.out.println("请输入圆的半径 :"); 57 while (true) { 58 r = scanner.nextDouble(); 59 if (r < 0) { 60 System.out.println("输入有误,请重新输入 :"); 61 }else { 62 R = r; 63 break; 64 } 65 } 66 } 67 68 public double getR() { 69 return R; 70 } 71 72 public double getArea(){ 73 return PI * R * R; 74 } 75 76 public double getCircumference(){ 77 return 2 * PI * R; 78 } 79 80 @Override 81 public String toString() { 82 return "Circle{" + "X=" + super.getX() + ",Y=" + super.getY() + 83 ",R=" + R + ",circumference=" + getCircumference() + ",area=" + getArea() + "} "; 84 } 85 } 86 87 class Cylinder extends Circle{ 88 private double H; 89 90 public Cylinder(int x, int y) { 91 super(x, y); 92 } 93 94 @Override 95 public void setR() { 96 double r; 97 System.out.println("请输入圆柱的底面半径 :"); 98 while (true) { 99 r = scanner.nextDouble(); 100 if (r < 0) { 101 System.out.println("输入有误,请重新输入 :"); 102 }else { 103 super.setR(r); 104 break; 105 } 106 } 107 } 108 109 public void setH() { 110 double h; 111 System.out.println("请输入圆柱的高 :"); 112 while (true) { 113 h = scanner.nextDouble(); 114 if (h < 0) { 115 System.out.println("输入有误,请重新输入 :"); 116 }else { 117 H = h; 118 break; 119 } 120 } 121 } 122 123 public double getVolumn(){ 124 return super.getArea() * H; 125 } 126 127 @Override 128 public double getArea() { 129 return 2 * super.getArea() + getCircumference() * H; 130 } 131 132 @Override 133 public String toString() { 134 return "Cylinder{" + "X=" + super.getX() + ",Y=" + super.getY() + ",R=" + super.getR() + 135 ",H=" + H + ",area=" + getArea() + ",volumn=" + getVolumn() + "} "; 136 } 137 }

浙公网安备 33010602011771号