接口与抽象类的区别
概述: 可以把接口看成是一种特殊的抽象类,他们两个的概念无非就是不断的从子类中抽取公共特征,将所有子类的公共特征全部抽取出来作为顶层父类。
区别
- 方法:
1)抽象类中可以有抽象方法和非抽象方法
2)接口中所有的方法都是不需要实现的,但是jdk8之后允许定义默认方法实现,用default关键字修饰 - 成员变量:
1)抽象类中可以向一般类一样定义类成员变量,没有关键字修饰的限制
2)接口中的成员属性默认都是final和static - 构造器
1)抽象类中可以有构造器
2)接口中没有构造器 - 继承与实现
1)抽象类不允许多继承,继承实现用extends关键字
2)接口允许多继承,继承实现使用implement关键字 - 和正常类的区别
1)抽象类是不能被实例化的
2)接口其实也不可以被实例化,但是实际上必须实例实现此接口的类对象