Java编程技巧_面向抽象编程

面向抽象编程

     面向抽象编程与面向接口编程相似,都是不直接面向具体的类,这样有利于扩展。在这里有个例子,用户想要计算一个柱形的体积,但这个柱形的底面形状是不确定的,那么如何在底面形状不确定的情况下完成体积的计算呢?这里可以写一个计算底面积的抽象类,利用抽象类去访问不同类型的底面积,然后计算体积时用抽象类与高度相乘就可以达到以不变应万变的目的。

根据这个思路,下边是具体内容:

一、面向抽象编程UML图示

在这里插入图片描述

二、面向抽象编程代码
public class Test {
    public static void main(String[] args) {
       Pillar pillar;
       Geometry bottom = null;
       pillar = new Pillar(bottom, 10);
       System.out.println("没有底的柱体体积:" + pillar.getVolume());

       bottom = new Rectangle(12, 22);
       pillar = new Pillar(bottom, 58);
       System.out.println("地面为长方形的柱体体积:" + pillar.getVolume());

       bottom = new Circle(10);
       pillar = new Pillar(bottom, 58);
       System.out.println("底面为圆形的柱体体积:" + pillar.getVolume());
    }
}

abstract class Geometry{
    public abstract double getArea();
}

class Circle extends Geometry{
    double r;
    Circle(double r){
        this.r = r;
    }
    @Override
    public double getArea(){
        return(3.14 * r * r);
    }
}

class Rectangle extends Geometry{
    double a, b;
    Rectangle(double a, double b){
        this.a = a;
        this.b = b;
    }
    @Override
    public double getArea(){
        return (a * b);
    }
}

class Pillar{
    //柱类
    Geometry bottom;
    double height;

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

    public double getVolume(){
        if(bottom == null){
            return -1;
        }
        return bottom.getArea()*height;
    }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值