Java面向对象:抽象类和抽象方法

抽象的概述

隐藏实现细节,仅仅向用户展示功能的过程。抽象可以用在类上,也可以用在类的成员函数上。面向对象中的抽象是建立在继承的基础之上,让基类定义好固定的流程,将派生类中以不同的操作细节实现的功能抽象化,交给派生类来实现。

抽象类

定义

被abstract关键字修饰的类称为抽象类。代码格式

public abstract class 类名 {

        //类体;

}

Notice:由于每一个java源文件中应当只写一个类,类的访问权限均为public。

特征

1. 抽象类无法直接创建对象,必须由继承它的非抽象派生类创建对象

2. 抽象类仍然有构造函数、在非抽象的派生类创建对象时被调用,用于初始化抽象类中定义的属性

3. 未必会有抽象方法,但一个类只要含抽象方法就一定是抽象类

抽象方法

定义

被abstract关键字修饰的成员函数称为抽象方法。代码格式

访问权限修饰符 abstract 返回值类型 函数名(参数列表);

特征

1. 抽象方法无函数体,要将大括号换成分号

2. 继承包含抽象方法的派生类,必须将基类定义的抽象方法全部重写,否则该派生类也应是抽象类,需要继续继承下去

3. 抽象方法访问权限修饰符不可以是private,否则派生类无法重写

在基类中定义抽象方法,相比写一个带有空的函数体的函数让派生类重写,优势在于 

抽象方法是一种规定派生类必须重写的方法,如果没有定义成抽象方法,派生类有权不用重写

适用场景

继承关系中,如果基类定义的方法不知如何实现,而继承这个类的派生类要用不同的操作实现这一方法时,将基类中这样的方法定义为抽象方法。

模板模式

就是将充当模板的类定义为抽象类,将固定的流程和实现写在抽象类中,对于不能确定如何实现的功能写成抽象方法,让使用模板的类继承这个抽象类,并重写抽象方法。也就是说对于模板类中的抽象方法,只需要关心做什么;对于模板使用者来说,只需要关心怎么做。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值