• Java面试题之接口和抽象类的区别


    接口(看了这个之后,面试官问你肯定加分哈哈哈)

    下面一些东西可能会让你不敢相信,这次分为jdk8和jdk9来测试的,大家也可以用不同的jdk尝试一下。先说一下基本的定义,在说一下特别的东西

    • 接口是一种引用数据类型。编译之后也是一个class字节码文件
    • 接口是完全抽象的。(抽象类是半抽象的)或者说接口是个特殊的抽象类
    • 接口支持多继承,一个接口可以继承多个接口
    1. public interface a extends b,c{
    2. }
    3. interface b{
    4. }
    5. interface c{
    6. }
    • 接口中包含两个部分:一部分时常量,一部分是抽象方法
    • 接口中的元素都是public修饰的
    • 接口中的public abstract可以省略
    • 接口中的常量的public static final可以省略
    • 一个非抽象的类实现接口的时候,必须将接口中的抽象方法都实现了
    • 接口中的方法在jdk8和jdk8以后都是可以有方法体的,这一点很多同学就可能会有疑问了,为什么有方法体,肯定是扯的,来给大家证明一下,大家也可以用两个jdk去证明一下。
    • jdk8对接口的测试(大家也可以去自己的idea测试一下方法体的问题)

    1. public interface a {
    2. static void test1(){
    3. System.out.println("接口中的静态方法");
    4. }
    5. default void test2(){
    6. System.out.println("接口中用default修饰的方法");
    7. }
    8. }

     jdk8以后对接口的测试(加了一个可以用private修饰的方法),大家可以用不同的jdk版本来验证一下,加深印象

    1. public interface a {
    2. static void test1(){
    3. System.out.println("接口中的静态方法");
    4. }
    5. default void test2(){
    6. System.out.println("接口中用default修饰的方法");
    7. }
    8. private void test3(){
    9. System.out.println("接口中用private修饰的方法");
    10. }
    11. private static void test4(){
    12. System.out.println("接口中用private static 修饰的方法");
    13. }
    14. }

     上面的两个点,面试官如果问到,你能回答出来觉得加分

    抽象类和接口的区别

    • 抽象类中有构造方法 接口中没有构造方法  
    • 抽象类是半抽象的 接口是完全抽象的

    • 接口和接口之间支持多继承 类和类之间只能单继承

    • 一个类可以同时实现多个接口 一个抽象类只能继承一个类(单继承)

     有疑惑的同学一定要去自己手动的试验一下,加深印象,面试官比如说接口中的方法不能有方法体啊什么的,一定坚定告诉他是可以的!!!

  • 相关阅读:
    一张图秒懂mybatis-plus关键词
    计算机毕设(附源码)JAVA-SSM基于健身房管理系统
    CoaXPress 线缆和接插件的设计要求
    uni-app 之 web-view 与h5 通讯
    21天学习挑战赛--分班
    【毕业设计】基于javaEE+原生servlet+tomcat的教师工资管理系统设计与实现(毕业论文+程序源码)——教师工资管理系统
    在KubeSphere中部署微服务(阡陌)+ DevOps
    IBL(Image-Based Lighting)
    vue3.0项目实战系列文章 - 菜单的实现及组件封装
    【数据结构】单链表的增删查改
  • 原文地址:https://blog.csdn.net/qq_43280993/article/details/127567482