17-抽象类的定义与使用

抽象类

类继承的主要作用在于可以扩充已有类的功能,但是对于之前的继承操作而言,子类可以由自己的选择任意决定是否要覆写某一方法,此时父类无法对子类作出强制性约定(强制性你必须覆写某些方法),这种情况下往往不会采用类的继承(实际开发中很少出现继承一个已经完善的类,可以直接使用的类)而是必须要继承抽象类,在以后进行父类设计的时候,应该优先考虑抽象类。

抽象类基本概念

抽象类的主要作用在于对于子类中覆写方法进行约定,在抽象类里面可以定义一些抽象方法以实现这样的约定,抽象方法指的是使用了abstract关键字定义并且没有提供方法体的方法,而抽象方法所在的类必须为抽象类,抽象类必须使用abstract来定义;
在普通类的基础上追加抽象方法就是抽象类;

abstract class Message{			//抽象类
	public abstract String test(); //抽象方法
}

抽象类是不可以使用new来实例化,抽象类不是完整的类,如若要使用,必须满足以下条件:

  • 抽象类必须提供有子类,子类使用extends继承一个抽象类;
  • 抽象类的子类(不是抽象类)一定要覆写抽象类中的全部抽象方法;
  • 抽象类的对象实例化可以利用对象多态化通过子类向上转型的方式完成;

从整体上来讲抽象类只是比普通类增加了抽象方法以及对子类的强制性的覆写要求而已,其他的使用过程和传统的类继承完全相同;
抽象类的几点意见:

  • 抽象类使用很大程度上有一个核心问题,抽象类无法直接实例化
  • 抽象类之中主要的目的是进行过渡操作使用,所以当你要使用抽象类进行开发的时候,往往都是在设计中需要解决类继承问题所带来的代码重复处理;

抽象类的相关说明

抽象类是一个重要的面向对象设计的结构,对于抽象类的时候要注意一下几点:

  • 在定义抽象类的时候绝对不能使用final关键字进行定义,因为抽象类必须由子类;
  • 抽象类是作为一个普通类的加强版出现的(抽象类的组成就是在普通类的基础上扩展而来的,只是追加了抽象方法),
    既然是在普通类基础上扩展的,那么普通类直指那个就可以定义属性和方法,那么这些属性一定是要求进行内存空间开辟的,
    所以抽象类一定可以提供有构造方法,并且子类也一定会按照子类对象的实例化原则进行父类构造调用;
  • 抽象类中允许没有抽象方法,但是即便没有抽象方法,也无法使用new实例化抽象类对象,必须依赖子类对象完成;
  • static方法永远不受到实例化对象或结构的限制,永远可以通过类名称进行调用;

模板设计模式(抽象类的应用)

抽象类的本质就属于一个加强型的类,那么对于类已经清楚了,可以描述一切的有关的现实事物,
通过分析也可以发现,抽象类的设计应该是比类更高一层的定义,抽象类的实际应用
抽象类最大的好处意识对子类方法的同一管理,而是可以提供自身提供有普通方法且这些普通方法可以调用抽象方法(这些抽象方法在由子类提供实现的时候才生效)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值