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