abstract类和abstract方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fighting123678/article/details/83050368

1、没有实现的方法是抽象方法

在这里插入图片描述

注意:
(1)一个方法如果没有实现的话,不需要有大括号,只需要public/private/protected+abstract+返回类型+方法名+()+“:”即可,这个与纯虚函数是类似的。
(2)含有抽象方法的类必须定义为抽象类,虽然定义为抽象类,但是可以声明为public或者private等类型,只需
public/private/protected+abstract+class+类名
,即可。


2、例题1:

在这里插入图片描述

在这里插入图片描述

注意:
(1)一个类如果继承与抽象类的话,一般情况下,需要实现抽象类中所有抽象方法的重写,但是如果某一个抽象方法没有重写的话,那么这个类还是抽象类,而且这个类必须在相应的位置加abstract,也就是说,如果一个类中有抽象方法或者没好完全实现抽象方法的话,这个类必须写上abstract关键字

(2)final方法中只能声明,对于实现,是在final方法外才能进行实现,不管是不是在抽象类中,都是这样的。
在这里插入图片描述

在这里插入图片描述

上图正确,下图错误


在这里插入图片描述

在这里插入图片描述

上图正确,下图错误

(3)抽象类不能被实例化,但是抽象类中可以有构造函数。


3、上面的类题是一个模板
(1)步骤确定,但是某些方法的实现可以是不同的
final类型的,所以步骤不能改,但是局部步骤的实现可以改变

在这里插入图片描述


4、注意
(1)抽象类是不完整的,所以不能用new,不能新建抽象类对象比如Pet是一个抽象类,那样的话,Pet a=new Pet();这样是错误的,因为抽象类是不完整的,没法实现创建。

在这里插入图片描述

思考中的编译会报错,因为abstract是用来被继承的,但是final是用来阻止被继承的,所以编译会报错。

猜你喜欢

转载自blog.csdn.net/fighting123678/article/details/83050368