在面向对象方法中,抽象类主要用来进行类型隐藏。构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;
通过从这个抽象体派生,也可扩展此模块的行为功能。为了能够实现面向对象设计的一个最核心的原则OCP(Open-Closed Principle),抽象类是其中的关键所在。
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
二、通过继承它实现多态,后期绑定,可以为将来要实现的东西做好接口,实现重用性, 例如: abstract class A { public abstract void doSomething(); } class B extends A { public void doSomething() { System.out.println("do B"); } } class C extends A { public void doSomething() { System.out.println("do C"); } } public class Test { public static void main(Stringp[] args) { A a1 = new B(); A a2 = new C(); B b = new B(); C c = new C(); doSomething(a1); //这里 doSomething(a2); //这里 doSomething(b); //这里,如果下面的方法不是用抽象类作参数,比如用C c做参数,这里会有什么问题? doSomething(c); //这里 } public static void doSomething(A a) {//这里,用抽象类,为什么,自己思考 a.doSomething(); } } //这个例子只是抽象类的最基本的设计模式,和接口差不多
子类继承抽象类后必须实现父类中的抽象方法。
如分页 分页父类BasicPage 父类中有个addParameter的方法。如果你建一个***Page的话它继承了BasicPage ,那么他必须加上addParameter的方法,否则报错