接口和抽象类的区别

抽象类:
1.抽象类必须是包含abstract关键字
2.抽象类可以用抽象方法或者没有。抽象方法必须是abstract关键字,表示只有声明没有实现。
3.抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
4.抽象类不能用来创建对象;
5.如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
 
接口:
1.接口必须是用interface申明
2.接口的变量必须是public static final 如果不写会隐式的制定。
3.接口的方法必须制定为 public abstract
 
区别:
1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

原文地址:https://www.cnblogs.com/Seeasunnyday/p/9101422.html