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 }

 

 

 

 

posted on 2021-12-03 14:00  小诺er  阅读(86)  评论(0)    收藏  举报