栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

每日一问:Java中接口和抽象类的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

每日一问:Java中接口和抽象类的区别

每日一问:Java中接口和抽象类的区别
    • 区别1:定义关键字不同
    • 区别2:继承或实现的关键字不同
    • 区别3:子类扩展的数量不同
    • 区别4:属性访问控制符不同
    • 区别5:方法控制符不同
    • 区别6:方法实现不同
    • 区别7:静态代码块使用不同
    • 总结


区别1:定义关键字不同
  • 接口使用关键字 interface 来定义。
  • 抽象类使用关键字 abstract 来定义。
区别2:继承或实现的关键字不同
  • 接口使用 implements 关键字定义其具体实现。
  • 抽象类使用 extends 关键字实现继承。
区别3:子类扩展的数量不同
  • 接口的实现类可以有多个。

  • 而抽象类的子类,只能继承一个抽象类,继承多个抽象类就会报错。

  • 在 Java 语言中,一个类只能继承一个父类(单继承),但可以实现多个接口。

区别4:属性访问控制符不同
  • 接口中属性的访问控制符只能是 public。

  • 接口中的属性默认是 public static final 修饰的。

  • 抽象类中的属性访问控制符无限制,可为任意控制符。

区别5:方法控制符不同
  • 接口中方法的默认控制符是 public,并且不能定义为其他控制符。
  • 抽象类中的方法控制符无限制,其中抽象方法不能使用 private 修饰。
区别6:方法实现不同
  • 接口中普通方法不能有具体的方法实现,在 JDK 8 之后 static 和 default 方法必须有方法实现。
  • 从上述结果可以看出:static 或 default 方法如果没有方法实现就会报错,而普通方法如果有方法实现就会报错。
    ​
  • 抽象类中普通方法可以有方法实现,抽象方法不能有方法实现。
  • 从上述结果可以看出:抽象类中的普通方法如果没有方法实现就会报错,而抽象方法如果有方法实现则会报错。
区别7:静态代码块使用不同
  • 接口中不能使用静态代码块。
  • 抽象类中可以使用静态代码块。
总结

接口和抽象类都是用来定义对象的公共行为的,但二者有以下 7 点不同:

  • 定义的关键字不同。
  • 子类继承或实现关键字不同。
  • 类型扩展不同:抽象类是单继承,而接口是多继承。
  • 方法访问控制符:抽象类无限制,只是抽象类中的抽象方法不能被 private 修饰;而接口有限制,接口默认的是 public 控制符。
  • 属性方法控制符:抽象类无限制,而接口有限制,接口默认的是 public 控制符。
  • 方法实现不同:抽象类中的普通方法必须有实现,抽象方法必须没有实现;而接口中普通方法不能有实现,但在 JDK 8 中的 static 和 defualt 方法必须有实现。
  • 静态代码块的使用不同:抽象类可以有静态代码块,而接口不能有。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988318.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号