抽象类与接口的区别

抽象类与接口的异同:

1、在抽象类中可以为部分方法提供默认的实现;接口中只能包含抽象方法;抽象类也是一种类,定义的时候比如 public abstract class{}  来定义;接口是一种特殊的类,interface(接口)必须靠类来实现(implements);

2、向抽象类中添加一个具体的方法,不会对它的子类造成影响;而对于接口一旦公布就不应被改变。抽象类的子类如果不是抽象类的话,必须实现抽象类的抽象方法,有一点必须记住,一个类里面如果有抽象的方法,那么这个类就一定是抽象类,  如果一个类是抽象的类的话,他里面的方法可以是抽象的,也可以实现,还可以全部都实现;
3、一个类只能继承一个直接的父类,这个父类可能是抽象类;但一个类可以实现多个接口。
4、接口的数据成员是公有常量(public static final),方法默认都是public abstract类型;抽象类的数据成员可以是任意的,抽象方法不能用private修饰,也不能加final。

通俗的说法:

接口是只定义了我们人类应该能做什么,但没有说明该怎样做。

抽象类是,我只能说明我会的一部分,不会的请子孙来完成。。。

接口和抽象类都是不能生成实例的;都拥有抽象方法;接口中全部是抽象方法,抽象类中可以有非抽象方法;接口中所有属性都是静态常量,抽象类中可以有任何类型属性;抽象类可以有构造器,接口中除了抽象方法什么都没有;一个接口可以继承多个接口,抽象类只能继承一个父类;抽象类可以实现接口的。

***接口引用完全可以看做是类引用--但是接口引用的强大之处在于,它可以引用任何实现该接口的类。

原文地址:https://www.cnblogs.com/ratooner/p/1673804.html