抽象类、实现类、接口的区别

抽象类、实现类、接口的区别

接口和抽象类的区别:

1.抽象类中的方法可以有方法体,也就是可以实现具体的方法,但是接口中的方法必须是抽象的,只能声明,没有方法体

2.抽象类的成员变量修饰随便(public,private,protected等等),接口的成员变量必须是public,static,final修饰(默认)(可以用来做定义常量的类)

3.一个类只能继承一个抽象类,但是一个类可以实现多个接口

4.接口的所有方法必须被它的实现类全部实现(没有例外),接口的实现类如果不能实现接口的所有方法,那必须声明为抽象类

5.类只能单继承,但是接口可以多继承

6.接口是隐式抽象的, 所以在声明接口的时候不用加abstract关键字,接口中的方法也是隐式抽象的,不用加abstract关键词

7.可以用接口声明一个变量,为空指针或者绑定到一个实现该接口的类的对象上

8.抽象类不能实例化对象,只有抽象类的非抽象子类可以实例化对象

9.抽象类中不一定包含抽象方法,但是有抽象方法的类必须是抽象类

10.抽象类中的抽象方法只是声明,不包含方法体,

11.构造方法,类方法(用static修饰的方法)不能声明为抽象方法

12.抽象类的子类必须给出抽象类的抽象方法的具体实现,否则该子类必须声明为抽象类,抽象类的所有方法需要被子类全部实现(有一种情况例外,除非子类也是抽象类,其实就是把实现的责任又传递了下去);

13.抽象类的关键字是abstract修饰,接口的关键字是interface修饰。

14.抽象类有构造方法,接口没有构造方法。(但两者均不能被实例化,用我自己的话来概括就是,两者都是抽象派,没有具体的实际行为,所以不允许它们实例化!)

15.抽象类的方法可以是普通方法,也可以是抽象方法。接口的方法必须是public,abstract修饰(默认)(1.8以后方法可以加static关键字,但必须有方法体)

普通类和抽象类有哪些区别?

  • 抽象类不能被实例化
  • 抽象类可以有抽象方法,抽象方法只需申明,无需实现
  • 含有抽象方法的类必须申明为抽象类
  • 抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是抽象类
  • 抽象方法不能被声明为静态
  • 抽象方法不能用private修饰
  • 抽象方法不能用final修饰

作者:静默虚空
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

posted @   糊涂图-4060  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示