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

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();
}

猜你喜欢

转载自blog.csdn.net/qq_42380734/article/details/108481832
今日推荐