抽象类与接口
来源:互联网 发布:现在学java前景怎么样 编辑:程序博客网 时间:2024/06/05 19:11
一、抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。在面向对象中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
举个例子,“水果”是个抽象类,指可以食用的植物果实和种子,有水分和糖分,但世界上不存在“水果”这个实实在在的东西,它只是一个定义。“苹果”、“香蕉”、“鸭梨”则是具体类,它们是现实世界中存在的东西,都具有水果的共性。
二、接口
接口是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。
举个例子解释一下,大雁属于鸟类,可以用翅膀飞;飞机属于交通工具,可以用引擎和机翼飞;风筝属于玩具,可以借助风力飞。因为不是所有的鸟、交通工具和玩具都能飞,所以想让它们飞的时候不能使用继承,它们是完全不同的对象,但有共性——都可以在天上飞,可以定义一个“飞”接口,利用多态性让它们三个分别以自己的方式实现“飞”这个接口。
三、抽象类与接口的异同
1.相同点:
1).都不能实例化。
2).包含未实现的方法声明。
3).派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员。
2.异同点:
1).抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可以被子类部分实现,接口的成员需要实现类完全实现。
2).一个类只能继承一个抽象类,但可以实现多个接口。
3).抽象类中可以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;而接口中不能有成员变量、常量、静态方法,只能有公共的属性。
4).从设计角度讲,抽象类是从子类中发现了公共的东西,泛化出父类,然后子类继承父类,而接口是根本不知道子类的存在,方法如何实现还不确定,预先定义。也就是说抽象类是自底而上抽象出来的,接口是自顶向下设计出来的。
5).抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
3.二者的联系:
类是对对象的抽象,抽象类是对类的抽象,接口是对行为的抽象,它们的共性就是抽象。如果只关注行为对象,也可以认为接口就是抽象类。
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 抽象类与接口
- 抽象类与接口
- 抽象类与接口
- 接口与抽象类
- 接口与抽象类
- STM32F103 STM32F407 引脚配置 方法对比
- IOSUndefined symbols for architecture armv7s:解决之道
- CollectionUtils与StringUtils
- Android开源项目第二篇——工具库篇
- GCC options for ARM architectures
- 抽象类与接口
- VC++动态链接库(DLL)编程深入浅出(一)
- IOSsymbol(s) not found for architecture i386 解决办法
- hdu 1305 Immediate Decodability(Trie树)
- 给程序员简历的一些建议
- likearticle 取消当关键词是空时候乱调用其他文章
- 第7周
- all sort
- c#各种小程序