类的特征

一、封装性
类的封装性是指把数据和代码组合在一个结构中。
对类最基本的理解是把数据和代码组合在同一个结构中,这就是类的封装特性。将对象的数据域封闭在对象的内部,使得外部程序必需而且只能使用正确的方法才能对要读写的数据域进行访问。封装性意味着数据和代码一起出现在同一结构中,如果需要的话,可以在数据周围砌上“围墙”,只有用对象类的方法才能在“围墙”上打开缺口。
注意:
1、保持良好的类的接口(属性或方法,和interface是两个概念,以下统称接口)
假如有一个类,他的一部分接口用来操作堆栈,一部分接口用来从数据库中提取数据,还有一部分接口用来控制打印走纸,那么,这个类看上去真的比较乱,因为用户不知道你这个类到底是为什么编写的,这样的类也就不能称之为类了。看上去更像是把一堆风马牛不相及的函数死拉硬拽到一起“凑份子”凑出来的“累”。
一个封装良好的类,应该有一个一致性的接口,也就是说,类提供给外界使用的所有接口都应该是有关联的,上面的类其实我们可以写成三个类比较好:一个类用来操作数据库、一个类用来操作堆栈、一个类用来控制打印机走纸。
这样设计的好处是能让人一看就清楚的知道,你这个类到底是围绕什么来工作的,就像我们写作文也必须有一个中心思想一样,如果没有中心思想,那么这篇作文也就不叫作文了,而是流水帐了。
在任何时候,都不要有“写一个万能类”的想法。
2、注重隐藏信息
在编写类的时候,我们应该非常清楚的知道,这个类有哪些信息是不需要外界访问的,就像司机开汽车,司机只需要知道怎么弄方向盘,怎么踩离合器,怎么刹车和提速就可以了。而有关汽车内部发动机的工作原理,司机并不需要知道。
当我们在拿到一个类的CODE的时候,除非你是为了学习,否则你应该忍住看私有域所有实现代码的冲动。虽然现在提倡开源,但是我想开源的目的是为了提高相互交流,而并不是为了让你可以把原本私有的、外界无法访问的接口对外开放。如果你把原先外界无法访问的域信息全部对外公开了,那么你这个类存在就无任何意义了。
3、使用属性在类与类之间传递数据
例如:TControl类的Left、Top、Width、Height四个属性,如果它是以变量的方式来提供给外部直接使用的话,我们设想一下一个这样的需求:假如我们要改变一下组件宽度,并且改变宽度后要在组件最右边绘制一张位图,那么当外界改变了组件宽度时,由于这个变量是直接供外界读写的,它在被写而发生改变的时候,组件无法得到通知,因此也就无法实现重画位图的需求了。
而在属性定义的时候,你必须指定一个read限定符和一个write限定符(read 或 write 都可选 但你至少必须指定一个限定符),当你为一个属性的write限定符指定了一个方法(Delphi中必须是一个过程)时,当你执行如:TControl.Width:= 0;这样的代码时,编译器会自动为你调用write指定的方法,这样我们就可以在属性发生改变的时候让类去执行一些有关的操作,换言之就是类可以得到属性值被修改的通知而做出相应的动作。
同样,当我们需要让外部访问类中私有部分的一个变量但不允许改动的时候,我们可以为类添加一个属性,并只指定read限定符来指向这个变量,不用write限定符,从而限制为只读。
二、继承性
对象的继承性是指把一个新的对象定义为一个对象的的后代。
继承性的含义直接而且显然。它是指把一个新的对象定义成为已存在对象的后代;新对象继承了旧类的一切东西。在往新对象中添加任何新内容以前,父类的每一个字段和方法都已存在于子类中,父类是创建子类的基石。
三、多态性
对象的多态性是指在对象的体系中把设想和实现分开的手段。
多态性是在对象体系中把设想和实现分开的手段。如果说继承性是系统的布局手段,多态性就是其功能实现的方法。多态性意味着某种概括的动作可以由特定的方式来实现,这取决于执行该动作的对象。多态性允许以类似的方式处理类体系中类似的对象。根据特定的任务,一个应用程序被分解成许多对象,多态性把高级设计处理的设想如新对象的创建、对象在屏幕上的重显、程序运行的其它抽象描述等,留给知道该如何完美的处理它们的对象去实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值