java的面向抽象原则

来源:互联网 发布:系统数据接口方案 编辑:程序博客网 时间:2024/06/05 17:12

java的面向抽象原则

- 未使用抽象原则

圆面积的计算

Circle.javapublic 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类的代码

原创粉丝点击