JAVA抽象类和接口异同点

JAVA抽象类和接口异同点

    • 知识点概述
    • 语法层面
    • 思想层面:
    • 相同点
    • 总结

知识点概述

抽象类:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
接口:在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法

语法层面

比较点 抽象类 接口
关键字 abstract class interface
字段 无限制 必须是public、static和final的
方法 既可以含普通方法,也可以含抽象方法。 只能含抽象方法,且必须是public的
继承/实现 只能被类或抽象类继承 既可以被接口继承,也能被类或抽象类继承
多重继承 不支持 可以继承多个父接口

思想层面:

抽象类与子类为”is a”关系,它抽象出事物的共同本质特征,可单一继承;
接口与实现类为”like a”关系,它定义并规范了个性化的功能特征,可多重继承(实现)。

相同点

抽象类和接口都不能被实例化,两种都是java实现抽象的方式。

总结

抽象类的功能要远超过接口,但是,定义抽象类的代价高。因为高级语言来说(从实际设计上来说也是)每个类只能继承一个类。

你可能感兴趣的