
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
抽象类与接口是程序员在学习java编程开发技术的时候需要重点掌握的编程知识,而今天我们就一起来了解一下,抽象类和接口的定义特点都有哪些。
一、抽象类
在面向对象编程的语言中,多数都添加了对抽象类和接口的支持,比如常用的java,C#等语言。
二、抽象类主要有以下几点特征:
抽象类不能被实例化,只能被继承。也就是说如果NewHuman()会报编译错误
抽象类也是类,可以包含属性和方法,方法可以包含实现,也可以不包含,不包含实现被称为抽象方法。
子类继承抽象类,必须要实现定义的所有抽象方法,不然编译器会报编译错误。
抽象类本质上还是类,只不过是一种不能被实例化的特殊类而已,但是在面向对象的设计过程中却起着非常重要的地位,本质上抽象类体现的是is-a的关系
三、接口
接口在系统设计中,重要的作用就是解耦。你应该听过不止一次的“面向接口编程”和依赖倒置等思想,这些也是面向对象设计思想的一种体现。接口本质上是抽象出来的对象的行为,或者叫做契约。在面向接口开发中,调用者不关心接口的实现,而是依赖于接口的定义,接口定义的稳定性代表着一个系统的稳定性,如果一个系统对外的接口定义有问题,那这个系统多半是会死人的。
四、接口有以下特点
接口只能定义行为,不能包含行为的实现
类型继承接口的时候,必须要实现接口的所有行为
接口不同于类,不能包含属性
由于接口体现的是行为准则,所以接口在定义的时候也可以利用面向对象设计理念,当多个不同接口定义了相同的行为,可以考虑抽象出更上层的接口来实现行为的复用。
五、区别与联系
抽象类和接口都是对象的抽象行为产生的,只不过抽象类更加侧重于is-a的关系,它实现了代码复用,而接口更加侧重于行为的抽象(has-a),举一个很简单的栗子,如果设计一个鸟类的抽象该怎么做呢?不同的鸟可能羽毛的颜色不一样,像这样的属性可以利用抽象类,不同的鸟类可能会有不同的飞行行为,这样行为类的抽象利用接口来实现更加合适。
无论是接口还是抽象类,在代码层次上体现的是上下级关系,就算一个编程语言没有提供接口和抽象类的定义,只要能实现对象上下级关系,原理上也可以实现面向对象编程。编程的抽象思想始终在围绕着上下,内外这几个维度在合理的进化着。
说到接口的定义,其实还可以在泛化一下,接口中只有行为方法的定义,在一些不支持接口的编程语言中,可以把只包含方法的类看做接口的抽象定义,这在设计理念上是说的通的。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。