【面试题】 Java 8 之后接口和抽象类的比较

本文详细对比了Java8中接口与抽象类的特点,包括它们的定义方式、继承与实现机制、方法实现、构造器使用及访问修饰符等关键差异。同时,提供了具体的代码示例,帮助读者理解两者的不同应用场景。

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

Java 8 之后接口和抽象类的比较

声明:此博文是因为我在百度上找了很多抽象类与接口的区别,发现都没有把Java 8的新特性描述好,所以自己百度总结了一下,如有遗漏,请私信!



相同点

  • 都不能实例化
  • 都包含为实现方法
  • 子类都必须实现为实现方法

区别

  • 抽象类用abstract定义,接口用interface定义
  • 抽象类只能单继承,但可以多重继承,接口不仅可以多继承接口,还可以被多实现
  • 抽象类可以包含任意多个有方法体的方法,但接口在Java 7之前是不允许的,Java 8允许有多个默认方法
  • 抽象类可以有构造器,主要为了初始化,但不能自己调,只能是子类来调,接口没有构造器
  • 抽象类的访问的访问修饰符可以是任意,但接口默认就是public,并且接口中的变量默认是 public static final修饰
  • 抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。

抽象类:

public abstract class Employee
{
   private String name;
   private String address;
   private int number;
   // 构造器
   public Employee(String name,String address,int number){
		this.name = name;
		this.address= address;
		this.number= number;
	}
   
   public abstract double computePay();
   
   //其余代码
}

接口:


public interface IDemo {

    // 默认方法,可以有多个
    default void fun() {
        System.out.println("Default method");
    }

    public static final Integer DEFAULT_VAR = 1;

    // 抽象方法
    public abstract void doGet();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值