面试题:抽象类和接口类的区别?


抽象类

  • 用abstract修饰
  • 不能被实例化,即不能用new关键字来实例化对象
  • 含有0个或多个抽象方法(抽象类可以没有抽象方法,但是有抽象方法一定是抽象类)
  • 抽象方法只有方法体,没有实现。
  • 如果子类实现了父类的所有抽象方法,那么它可以不是抽象类,否则一定是抽象类
  • 可以有具体的方法

接口

  • 用interface修饰
  • 不能被实例化
  • 一个类只能继承一个类,但是可以实现多个接口
  • 接口中的方法均为抽象方法,没有实现。
  • java8开始接口可以有默认实现
  • 不能有实例域和静态方法

区别?

  1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
  2. 接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。
  3. 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口。
  4. 接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM