java的面向抽象原则

java的面向抽象原则

- 未使用抽象原则

圆面积的计算

Circle.java

public class Circle {

    double r;
    Circle(double r){
        this.r = r;
    }

    public double getArea(){

        return 3.14*r*r;
    }
}

圆柱体体积计算


public class Pillar {

    Circle bottom;
    double height;
    Pillar(Circle bottom,double height){

        this.bottom = bottom;
        this.height = height;
    }

    public double getVolume(){
        return bottom.getArea()*height;
    }


}

矩形面积


public class Recatangle {

    double a,b;
    Recatangle(double a,double b){
        this.a = a;
        this.b = b;
    }

    public double getArea(){
        return a*b;
    }
}

测试函数


public class Applavation {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

        Circle circle = new Circle(5);
        System.out.println("圆的面积为"+circle.getArea());
        Circle bottom = new Circle(5);
        Pillar pillar = new Pillar(bottom,10);
        System.out.println("圆柱的体积为"+pillar.getVolume());
        Recatangle recatangle = new Recatangle(2,3);
        System.out.println("矩形的面积为"+recatangle.getArea());

    }

}

- 使用抽象类

几何类函数


public abstract class Geometry {

    public abstract double getArea();   
}

圆的面积


public class Circle extends Geometry {

    double r;
    Circle(double r){
        this.r = r;
    }

    public double getArea(){

        return 3.14*r*r;

    }

}

圆柱体体积


public class Pillar {

    Geometry bottom;                     // bottom为抽象类Geomtry的声明
    double height;

    Pillar(Geometry bottom, double height) {
        this.bottom = bottom;
        this.height = height;
    }

    public double getVolume() {
        return bottom.getArea() * height;
    }
}

矩形面积


public class Rectangle extends Geometry {   //通过使用接口来定义Geometry

    double a,b;
    Rectangle(double a,double b){
        this.a = a;
        this.b = b;
    }

    public double getArea(){
        return a*b;
    }
}

测试函数


public class Application {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

        Pillar pillar;
        Geometry bottom;
        bottom = new Rectangle(2,3);
        pillar = new Pillar(bottom,4);
        System.out.println("长方体体积"+pillar.getVolume());


        bottom = new Circle(2);
        pillar = new Pillar(bottom,4);
        System.out.println("圆柱体体积"+pillar.getVolume());
    }

}

通过使用面向抽象来设计,使得添加其他Geometry子类时,不需要修改Pillar类的代码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值