21.抽象类

什么是抽象?

类到对象是实例化,对象到类是抽象。

什么是抽象类?

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类是被abstract修饰的类,抽象类不能被直接创建对象,只能作为父类被子类继承,由子类创建对象。如果我们想让一个类不能创建对象,只能被子类继承,就可以加个“abstract”关键字来修饰这个类,抽象类不能创建对象,只能被子类继承的模板来使用。
抽象类属于什么类型?
抽象类也属于引用数据类型
抽象类的语法格式:

【修饰符列表】 abstract class 类名{
	类体;
}

抽象类的特点

  1. final和abstract无法联合使用,这两个关键字是对立的。
  2. 抽象类的子类可以是抽象类,抽象类也可以继承普通类,但没意义。
  3. 抽象类中可以定义抽象方法,抽象方法是被abstract修饰的方法,可以有参数和返回值类型,但没有方法体,没有大括号。
抽象方法的定义格式:
【修饰符列表】 abstract void 方法名();
  1. 如果子类继承抽象类,必须强制重写抽象类里面的抽象方法。
  2. 抽象类中不一定有抽象方法,但抽象方法只能出现在抽象类中。

问题1: final关键字可以修饰抽象类和接口吗?

不能。因为抽象类和接口的建立就是为了让子类去继承或实现,final修饰后就变成了最终类,还怎么继承和实现?

问题2: final关键字可以修饰抽象方法吗?
不能。因为抽象方法一定被定义在抽象类和接口内,因此一定会被强制重写,final修饰后变成了最终方法,还怎么重写?

总结

抽象父类一般被当作模板或者规范来使用。除了不能实例化对象,抽象类拥有普通类的所有功能,成员变量,成员方法,构造方法、常量…都可以定义,但能用归能用,却没用的必要,也没意义。比如在抽象父类里定义属性,子类虽然也能继承,但这样就没办法对类进行封装。为了保证代码安全性,后期开发我们必须要用到封装,所以推荐在子类里定义属性,然后使用封装的语法对属性进行封装。

由此可见,虽然抽象类中什么都可以定义,但给人的感觉就是一个半抽象,而且虽然什么都可以定义,却都没使用的意义。
那么java里面有没有这样一种语法,不允许在类中定义变量,也不允许在类中写普通方法?有这样的语法,就是接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值