抽象类和接口区别

1,接口的方法没有方法体(JDK1.8之前),JDK1.8之后也会有默认的方法体,而抽象类可以有非抽象的方法,有方法体(非抽象方法)

public void getUserName();
default boolean isEmpty(){
        return false;
}

2,接口的方法的访问修饰符都是public,抽象类的抽象方法可以有public、protected和default这些修饰符

3,抽象类中可以有普通成员变量,接口中没有普通成员变量

4,一个类可以实现多个接口,但只能实现一个抽象类。

5,抽象类可以有构造方法,只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例,但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数
      接口没有构造方法