Java基础之抽象和接口

抽象

在Java继承中,抽象类和普通继承关系中的父类作用基本相同,但是却在一般父类的基础上添加了一些限制:

  1. 抽象类不能被实例化,即不能被new对象,其子类只有实现了抽象类中的抽象方法才能被实例化;如果抽象类中没有抽象方法,则可以直接实例化
  2. 抽象类除了包含一般方法,变量,常量,同时自身还包含抽象方法
  3. 抽象类的子类必须实现抽象类中的所有抽象方法,除非它自己也声明为抽象类,但是这样做,子类则不能被实例化
  4. 如果一个类中有抽象方法,则这个类必定是抽象类
  5. 抽象方法和抽象类看上去是多余的,当然实际运用中,抽象类能实现的,我们可以使用一般的继承和接口实现,当然,存在即是有道理的,如果熟练运用的话,可以写更少的代码实现相同的功能

 

 

抽象类举例:

 

接口

从本质上来说,接口是一种特殊的抽象类:

  1. 接口由常量抽象方法组成,接口中的抽象方法可以省略abstract书写
  2. 接口不能被实例化

 

接口举例:

 

 

抽象类和接口比较

相同点:

都不能直接实例化,即不能直接new对象,通过多态性,可由其子类实例化

不同点:

  1. 抽象类包含一般方法,变量,常量,抽象方法;而接口只能包含常量和抽象方法
  2. 抽象类可以有构造方法,而接口不能有构造方法
  3. 一个类可以实现多个接口,但只能继承一个抽象类
  4. 继承抽象类时会引发单继承所带来的局限性,而通过实现接口的方式能够解决单继承带来的局限性
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值