实训10 抽象类
一、实验介绍:
编写应用程序,掌握抽象类的使用方法,能使用抽象类解决一些简单的问题。
二、实验目的:
1.掌握抽象类的使用方法。
三、实验环境:
1.Windows XP/7 操作系统
2.JDK+Eclipse
四、实验任务:
1.层次关系类的定义和使用。
五、实验原理及步骤:
1.根据给出的抽象父类Shape及类层次关系说明图(类层次图1),设计子类圆类Circle和子类圆柱体类Cylinder。定义类的无参数构造方法和有参数构造方法,覆盖父类方法满足子类要求,并按子类要求增加变量和相关方法。在各个类中增加main方法测试类,要求面积和体积的输出结果保留到小数点后两位。
类层次图1:               
输出结果如下:
public class Circle extends Shape {
    protected double radius;
    public Circle() {
        this(0,0,1);
    }
    public Circle(double x, double y, double radius) {
        super(x,y);//调用父类构造方法
        this.radius = radius;
    }
    public double area() {//实现父类抽象方法,求圆面积
        return Math.PI * radius * radius;
    }
    public String toString() {//覆盖父类方法,满足子类要求
        return "圆心:" + String()+"\t半径:" + this.radius;
    }
    public static void main(String[] args) {//测试Circle类
        Circle c1=new Circle();
        System.out.String()+"\t");
        System.out.printf("圆面积:%.2f\n",c1.area());   
        Circle c2=new Circle(1,1,1.2);
        System.out.String()+"\t");
        System.out.printf("圆面积:%.2f\n",c2.area());       
    }
}
public class Cylinder extends Circle{
    double height;
    Cylinder(){
        this(0,0,1,2);
    }
    Cylinder(double x,double y,double r,double height){
        super(x,y,r);
        this.height=height;
    }
    double volume() {
        return height*area();
    }
    public String toString() {
        String()+"\t圆柱体高:"+height;
    }
    public static void main(String[] args) {
        Cylinder c1=new Cylinder();
        Cylinder c2=new Cylinder(1,1,1.2,5);
        System.out.String());
        System.out.printf("\t底面面积:%.2f\t圆柱体积:%.2f\n",c1.area(),c1.volume());
        System.out.String());
        System.out.printf("\t底面面积:%.2f\t圆柱体积:%.2f\n",c2.area(),c2.volume());
    }
}
public abstract class Shape {
    protected double x,y;抽象类的使用
    public Shape() {       
        this(0,0);
    }
    public Shape(double x, double y) {       
        this.x = x;
        this.y = y;
    }
    public abstract double area();
    public String toString(){
        return "("+this.x + "," +this.y + ")";
    }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。