Java面向抽象编程的思想

来源:互联网 发布:印刷厂软件 编辑:程序博客网 时间:2024/05/24 00:59

在设计程序时,经常会使用abstract类,其原因是,abstract类只关心操作,但不关心这些操作具体实现的细节,可以是程序的设计者把主要精力放在程序的设计上,而不必拘泥于细节的实现,既避免设计者把大量的时间和经理花费在具体的算法上。
在设计一个程序时,可以通过在abstract类中声明若干个abstract方法,表明这些方法在整个系统设计中的重要性,方法体的内容细节有它的abstract子类去完成。
使用多态进行程序设计的核心技术之一是使用上转型对象,即将abstract类声明对象作为其子类的上传型对象,那么这个上转型对象就可以调用子类重写的方法。
所谓面向抽象编程,是指当设计一个类时,不让该类面向具体的类,而是面向抽象类,即所设计类中的重要数据是抽象类声明的对象,而不是具体类声明的对象。
示例:

abstract class Geometry{    public abstract double getArea();//模块}class Circle extends Geometry{    double r;    Circle(double r){        this.r=r;    }    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;    }    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(){        return bottom.getArea()*height;    }}public class App{    public static void main(String [] args){        Pillar pillar;        Geometry bottom;        bottom = new Rectangle(12,22);        pillar = new Pillar(bottom,58);//pillar是具有矩形底的柱体        System.out.println("矩形底的柱体的体积"+pillar.getVolume());        bottom = new Circle(10);//当用户需求改变时,不需要更改系统核心模块        pillar = new Pliiar(bottom,58);//pillar是具有圆形底的柱体        System.out.println("圆形底的柱体的体积"+pillar.getVolume());    }}

实现系统易维护:
开-闭原则,让设计的系统应用应当对扩展开放,对修改关闭。当系统中增加新的模块式,不需要修改现有模块。
在设计系统时,应当首先考虑到用户需求的变化,将应对用户变化的部分设计为扩展开放,而设计核心部分是经过精心考虑之后确定基本结构,应当对修改关闭。

0 0