抽象类和接口的共同点:
1.接口和抽象类都不能被实例化,他们都位于继承的最顶端,用于被其他类继承或实现。
2.他们都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
上面是两者的共同点,那么我主要说一下主要的区别。
1.首先既然既有接口又有抽象类,他们的设计目的肯定是不一样的。
接口体现的是一种规范,对于接口的实现类而言,接口规定了实现着必须要向外提供哪些功能。接口是多个程序模版间的耦合标准。
而抽象类作为系统中多个子类的共同父类,体现的是一种模版式设计。抽象类作为多个子类的父类,可以被对当成系统实现过程中的中间产品,而且这个中间产品已经实现了部分功能,但是还需要进一步的完善。
2.在使用方法上,两者的不同之处。
接口里只能包含抽象方法。抽象类则既可以包含普通方法也可以包含抽象方法。
接口里不能定义静态方法(或者叫类方法),但是抽象类可以。
接口里只能定义静态(或者类)Fields,但是抽象类则既可以定义类fields也可以定义成员fields。
接口没有构造器,但是抽象类有,同时,抽象类里的构造器并不是让用于创建对象,而是供子类调用来完成子类的构造。
接口里不能包含初始化块,但是抽象类则可以。
一个类可以实现多个接口,但是最多只能有一个抽象父类。同时我们也可以看到接口在一定程度上弥补java不能多继承的缺点。
上面的东西是本人的理解,希望对你有帮助。 |