abstract类和abstract方法

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

在这里插入图片描述

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


2、例题1:

在这里插入图片描述

在这里插入图片描述

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

只要含有抽象方法或者是继承来的未被实现的抽象方法,那么这个类就是抽象类,这个类前面就必须加上abstract

(2)模板方法首先也是个方法,方法内部是不能再定义方法的(也不能再声明方法),但是方法内部是可以调用别的方法,final方面里面是调用方法,都是正常的执行语句,方法里面肯定不能声明方法了,这个final方法里面,也是调用下面的一个个方法,而不是声明,声明和调用的形式不一致,看仔细了。

在这里插入图片描述

在这里插入图片描述

上图正确,下图错误


在这里插入图片描述

在这里插入图片描述

上图正确,下图错误

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


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

在这里插入图片描述


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

在这里插入图片描述

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值