Java面试题 abstract class和interface有什么区别?
abstract class和interface有什么区别?
1.相同点:
- 两者都是抽象类,都不能实例化。
- interface实现类及abstract class的子类都必须要实现已经声明的抽象方法。
2.不同点:
- interface需要实现,要用implements,而abstract class需要继承,要用extends。
- 一个类可以实现多个interface,但是一个类只能继承一个abstract class。
- interface强调特定功能的实现,而abstract class强调所属关系。
- 尽管interface实现类及abstract class的子类都必须要实现相应的抽象方法,但实现的形式不同,interface中的每一个方法都是抽象方法(JDK1.8以后在接口中使用default和static关键字来修饰接口中定义的普通方法),都只是声明的(declaration,没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。