区别:
-
首先接口和抽象类的设计目的就是不一样的。接口是对动作的抽象,而抽象类是对根源的抽象。
对于抽象类,比如男人,女人这两个类,那我们可以为这两个类设计一个更高级别的抽象类--人。
对于接口,我们可以坐着吃饭,可以站着吃饭,可以用筷子吃饭,可以用叉子吃饭,甚至可以学三哥一样用手抓着吃饭,那么可以把这些吃饭的动作抽象成一个接口--吃饭。
所以在高级语言中(如Java,C%23),一个类只能继承一个抽象类(因为你不可能同时是生物又是非生物)。但是一个类可以同时实现多个接口,比如开车接口,滑冰接口,游泳接口。
-
抽象类和接口都不能被直接实例化,如果二者要实例化,就涉及到多态。
如果抽象类要实例化,那么抽象类定义的变量必须指向一个子类对象,这个子类继承了这个抽象类并实现了这个抽象类的所有抽象方法。
如果接口要实例化,那么这个接口定义的变量要指向一个子类对象,这个子类必须实现了这个接口所有的方法。
抽象类
不能new抽象类,只能靠子类去实现;抽象类中可以写普通的方法;抽象方法只能在抽象类中
接口
接口比抽象类还要抽象,自己无法写方法,只有规范;是的约束和实现分离;
接口不能被实例化;接口中没有构造方法;