面向对象试题:
/**
* @Author: littledeerfish
* @Description: 建立一个Po(点)类,包含数据成员X,Y(坐标点),构造器;
* 以Po为父类,实现一个Circle(圆)类作为子类,增加数据成员R(半径),构造器、求圆面积方法getArea(),求圆周长方法getCircumference();
* 再以Circle类为父类,实现出一个Cylinder (圆柱体〕子类,增加数据成员H(高),构造器,求圆柱体积方法getVolume()、求圆柱表面积方法getArea(),请编写程序实现。(圆周率取3.14)
* 要求:
* 自定义各个类的toString方法,要求当上面三个类的对象创建完毕后,我们直接打印这个三个对象可以显示这个对象的完整信息。
* 如打印Circle类的对象会输出:
* Circle{X=1,Y=2,R=1,circumference=6.28,area=3.14}
* 友情提示X,Y,R应均为double类型;
* @Date: Created in 2021/12/3-17:34
* @Version: v1.8
**/
public class Day3 {
public static void main(String[] args) {
System.out.println(new Po(1, 2));
System.out.println( new Circle(1, 2, 1));
System.out.println(new Cylinder(1, 2, 1, 2));
}
}
//Po类:
class Po{
private double X;
private double Y;
public Po(double X, double Y) {
this.X = X;
this.Y = Y;
}
public double getX() {
return X;
}
public double getY() {
return Y;
}
//偷懒:
public String getMassage(){
return "x=" + getX() +", y=" + getY();
}
@Override
public String toString() {
return "Po{" +getMassage() +"}";
}
}
//圆的类:
class Circle extends Po {
private double R;
public double getR() {
return R;
}
public Circle(double x, double y, double R) {
super(x, y);
this.R = R;
}
//求面积:
public double getArea(){
// return Math.PI*R*R;
return 3.14*R*R;
}
//求周长:
public double getCircumference(){
// return 2*Math.PI*R;
return 3.14*R*2;
}
//重写toString:
@Override
public String toString() {
return "Circle{" + getMassage()+",R="+getR()+",circumference="+getCircumference()+",area="+getArea()+"}";
}
}
//圆柱体的类:
class Cylinder extends Circle{
private int H;
public Cylinder(double x, double y, double R,int H) {
super(x, y, R);
this.H= H;
}
//求体积:
public double getVolume(){
return super.getArea()*H;
}
//求表面积:
@Override
public double getArea(){
return 2*super.getArea()+super.getCircumference()*H;
}
//重写toString:
@Override
public String toString(){
return "Cylinder{"+getMassage()+",R="+getR()+",H="+H+",area="+getArea()+",Volume="+getVolume()+"}";
}
}
突然发现:为啥样例输出X、Y、R没有小数点?
运行结果: