相同点:
1、都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承
2、都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法
不同点:
接口 |
抽象类 |
作为系统与外界交互的窗口,体现的是一种规范 |
作为系统中多个子类共同的父类,体现的是一种模版设计 |
只能包含抽象方法 |
可以包含普通的已经实现的方法 |
不能定义静态方法 |
可以定义静态方法 |
只能定义静态常量Field,不能定义普通Field |
既可以定义普通Field,也可以定义静态常量Field |
不包含构造器 |
包含构造器 |
不能包含初始化块 |
可以包含初始化快 |
一个类可以实现多个接口 |
一个类最多只能有一个直接父类 |