java抽象类与抽象方法

262 阅读2分钟

 抽象类的概念

随着继承层次中一个个子类的定义,类也越来越趋向于具体,而类的父类也越趋向于通用,越一般,类的设计应保证父类和子类能够共享特征,有时就会把父类设计得非常抽象,以至于父类没有具体的实例,这样的类就叫做抽象类;

在编程中我们使用关键字abstract来修饰一个类使之称为抽象类,使用abstract修饰过的类无法创建对象但其仍然有构造器,abstract不会影响类本身的结构,而且其子类在创建对象时也需要调用其构造器。

抽象方法

抽象方法就是用abstract修饰过的方法,表示一个确定的功能抽象方法中没有方法体,只有抽象方法的声明,但其功能是确定的,只是不知到怎麽去实现(体现为没有方法体),我们需要对其所在类的子类中对其进行实现(implement),也可以看作在子类中重写此方法。

举例:

先声明一个父类并且使用abstract修饰,使之成为抽象类;

屏幕截图 2023-11-02 191036.png

再声明两个子类Circle和Square使之继承于GeometricObject,并且对GeometricObject中的抽象方法进行实现。

屏幕截图 2023-11-02 191107.png

屏幕截图 2023-11-02 191141.png

 使用abstrac修饰方法时有一些需要注意的点:

不能使用abstract去修饰权限为private的方法;

使用final修饰过的方法不能使用abstract去修饰

静态方法无法使用abstract去修饰

模板方法的设计模式:

由抽象类的特点可以体现出模板方法的设计模式,抽象类作为子类的一个通用模板,让子类在此基础上进行拓展,并使子类仍然具有抽象类的行为方式。

在我们解决实际问题时,如果功能内部一部分时具体的,已经确定好了的,而另一部分是不确定的。这时我们就可以将不确定的部分暴露出去让子类去实现。即在开发中有一部分的功能是确定的,而有的功能是易变的,我们可以把易变的部分让子类去实现,从而达到目的,这就是所谓的模板方法的设计模式。