Java基础之【接口和抽象类的区别】
其实java8引入了default默认方法后,接口抽象类的差别被缩小了,所以这个问题的意义就没那么大了,而且实际中我们通常只使用接口
关键的区别有4点:
1.接口中的方法必须被其实现类@override ,而抽象类中的方法子类去extends的时候不必须去@override
2.抽象类可以有抽象跟非抽象方法,接口只能由抽象方法,从java8开始接口也可以有默认和静态方法,那么实现类也可以不用去override该方法了
3.抽象类单继承,接口多继承(可以实现多个)
4.接口可以有final no-final和no-static变量 接口只有静态变量(static final)
详细区别参考秒懂百科:
1.抽象类要被继承 接口要被实现
2.接口只能做方法生命,抽象类中可以做方法声明跟方法实现
3.抽象类定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量
4.接口是设计的结果,抽象类是重构的结果
5.接口的抽象级别最高
6.抽象类可以用具体的方法跟属性(跟普通类一样),接口只能有抽象方法和不可变常量
7.抽象类主要用来抽象类别,接口主要用来抽象功能