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

博客围绕Java接口和抽象类展开。介绍了接口是引用数据类型、完全抽象、支持多继承等特性,还提及JDK8及以后接口方法可带方法体,JDK8后接口有可private修饰的方法。同时阐述了抽象类和接口在构造方法、抽象程度、继承规则等方面的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

  • 接口是一种引用数据类型。编译之后也是一个class字节码文件
  • 接口是完全抽象的。(抽象类是半抽象的)或者说接口是个特殊的抽象类
  • 接口支持多继承,一个接口可以继承多个接口
public interface a extends b,c{

}
interface b{

}
interface c{

}
  • 接口中包含两个部分:一部分时常量,一部分是抽象方法
  • 接口中的元素都是public修饰的
  • 接口中的public abstract可以省略
  • 接口中的常量的public static final可以省略
  • 一个非抽象的类实现接口的时候,必须将接口中的抽象方法都实现了
  • 接口中的方法在jdk8和jdk8以后都是可以有方法体的,这一点很多同学就可能会有疑问了,为什么有方法体,肯定是扯的,来给大家证明一下,大家也可以用两个jdk去证明一下。
  • jdk8对接口的测试(大家也可以去自己的idea测试一下方法体的问题)

public interface a {

    
    static void test1(){
        System.out.println("接口中的静态方法");
    }
    
    default void test2(){
        System.out.println("接口中用default修饰的方法");
    }
    
}

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

public interface a {

    
    static void test1(){
        System.out.println("接口中的静态方法");
    }
    
    default void test2(){
        System.out.println("接口中用default修饰的方法");
    }

    private void test3(){
        System.out.println("接口中用private修饰的方法");
    }
    private static void test4(){
        System.out.println("接口中用private static 修饰的方法");
    }
    
}

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

抽象类和接口的区别

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java+每天进步亿点点

一起学习一起进步一起高薪

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值