抽象类的概念
随着继承层次中一个个子类的定义,类也越来越趋向于具体,而类的父类也越趋向于通用,越一般,类的设计应保证父类和子类能够共享特征,有时就会把父类设计得非常抽象,以至于父类没有具体的实例,这样的类就叫做抽象类;
在编程中我们使用关键字abstract来修饰一个类使之称为抽象类,使用abstract修饰过的类无法创建对象但其仍然有构造器,abstract不会影响类本身的结构,而且其子类在创建对象时也需要调用其构造器。
抽象方法
抽象方法就是用abstract修饰过的方法,表示一个确定的功能抽象方法中没有方法体,只有抽象方法的声明,但其功能是确定的,只是不知到怎麽去实现(体现为没有方法体),我们需要对其所在类的子类中对其进行实现(implement),也可以看作在子类中重写此方法。
举例:
先声明一个父类并且使用abstract修饰,使之成为抽象类;
再声明两个子类Circle和Square使之继承于GeometricObject,并且对GeometricObject中的抽象方法进行实现。
使用abstrac修饰方法时有一些需要注意的点:
不能使用abstract去修饰权限为private的方法;
使用final修饰过的方法不能使用abstract去修饰
静态方法无法使用abstract去修饰
模板方法的设计模式:
由抽象类的特点可以体现出模板方法的设计模式,抽象类作为子类的一个通用模板,让子类在此基础上进行拓展,并使子类仍然具有抽象类的行为方式。
在我们解决实际问题时,如果功能内部一部分时具体的,已经确定好了的,而另一部分是不确定的。这时我们就可以将不确定的部分暴露出去让子类去实现。即在开发中有一部分的功能是确定的,而有的功能是易变的,我们可以把易变的部分让子类去实现,从而达到目的,这就是所谓的模板方法的设计模式。