以文本方式查看主题 - 曙海教育集团论坛 (http://peixun0.cn/bbs/index.asp) -- Delphi程序设计 (http://peixun0.cn/bbs/list.asp?boardid=76) ---- 面向对象编程与Delphi技术浅入讨论 (http://peixun0.cn/bbs/dispbbs.asp?boardid=76&id=2574) |
-- 作者:wangxinxin -- 发布时间:2010-12-14 11:27:00 -- 面向对象编程与Delphi技术浅入讨论 第二电脑网导读:是面向过程语言所不能比拟的,本文所有程序设计例程均由DELPHI中的OBJECT PASCAL语言进行描述。首先要说明的是,本文不是和大家讨论如何用可视化开发平台的IDE去设计程序的界面,也不用大篇幅的和大家讨论各个控件VCL的应用,不讨论如何用开发平台去完成一个MIDAS/ADO/DCOM数据库的开发过程,本文只和大家简单,肤浅的讨论面向对象语言的技术,和大家讨论面向对象语言内在的规则,...
<iframe id="google_ads_frame1" style="LEFT: 0px; POSITION: absolute; TOP: 0px" name="google_ads_frame" marginwidth="0" marginheight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-9414907233156792&output=html&h=250&slotname=5594755314&w=300&lmt=1267524486&flash=10.1.102.64&url=http%3A%2F%2Fwww.002pc.com%2Fmaster%2FCollege%2FLanguage%2FDelphi%2F12980_5.html&dt=1292297143640&shv=r20101117&jsv=r20101209&saldr=1&correlator=1292297143703&frm=0&adk=2114289378&ga_vid=2056410259.1292297144&ga_sid=1292297144&ga_hid=1170765305&ga_fc=0&u_tz=480&u_his=0&u_java=1&u_h=768&u_w=1024&u_ah=734&u_aw=1024&u_cd=32&u_nplug=0&u_nmime=0&biw=771&bih=458&eid=30143103&ref=http%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3DDelphi%25B3%25CC%25D0%25F2%25C9%25E8%25BC%25C6%25BC%25BC%25CA%25F5%25CC%25D6%25C2%25DB%26pn%3D80&fu=0&ifi=1&dtd=156&xpc=1l1lkerKiP&p=http%3A//www.002pc.com" frameborder="0" width="300" scrolling="no" height="250" allowTransparency="allowTransparency"></iframe><iframe style="VISIBILITY: hidden; POSITION: absolute" src="http://pagead2.googlesyndication.com/pagead/s/iframes_api_loader.html" width="1" height="1"></iframe> 正文:inherited create; name:=\'gaohongyan\'; age:=23; school:=\'东北电力学院-电子商务系-2001级大专12班\'; teacher:=\'zhaolifei\'; end; procedure tghyother.display; begin writeln(name); writeln(age); writeln(school); writeln(teacher); end; end. 当执行完这个程序后,屏幕上出现这个结果: gaohongyan 23 东北电力学院-电子商务系-2001级大专12班 zhaolifei 我们结合上面的例子不难看出在unit1中声明的tghy类,在unit2中的tghyother是继承自tghy类的,是tghy类的一个"孩子",它们是父子关系,而在tghy类中的name,age成员是声明在protected保护成员中的,根据保护成员的特性,我们就可以在tghyother类的实例newobject中访问tghy中的成员内容了,如果把tghy类中的name,age声明在private私有成员中,那么是不可能被tghyother类的实例newobject所访问到的。 请切记,每天下班后把你认为对孩子重要事情和他交流。 如果要想让自己的派生类访问基类中的成员,声明在protected段中。 1.0.5.3 公有成员public 每个人每天都会发生一些让自己感到快乐的事情,你会告诉你的家人,你的朋友,你愿意把这个快乐和大家一起分享,如果是这样的话,那就是public。 公有成员Public是把要公开的信息发表出去的地方,你想把任何的消息让任何人知道,就通过public发布出去。通过把向外界提供服务功能放在此部分中,实现向外界提供服务。 举个例子: 新建一个工程,工程中包括一个工程文件,及一个单元文件。 工程文件内容: program Project1; {$APPTYPE CONSOLE} uses SysUtils, Unit1 in \'Unit1.pas\', Unit2 in \'Unit2.pas\'; var newobject:tghy; begin newobject:=tghy.create; newobject.display; newobject.free; end. 单元文件1内容: unit Unit1; interface uses Dialogs; type tghy=class public constructor create; procedure display; virtual; end; implementation constructor tghy.create; begin end; procedure tghy.display; begin writeln(\'this is public\'); end; end. 程序运行后,屏幕上出现结果: this is public 通过上面的这个例子,我们知道在工程文件中声明一个tghy类的实例newobject能访问tghy类的public中的部分。通常一个类的方法就声明在public中,来为其类的实例进行任何的数据操作。 请切记,把你每天快乐的事情告诉给你的家人,朋友。 把你要发布的信息放到public中去,让大家都知道。 1.0.5.4 发行成员published 如果您十分的熟悉DELPHI的开发环境的话,那么属性编辑器一定是您最常用的工具了,里面显示了当前控件的属性,显示了当前控件的状态,里面显示的状态的内容就是声明在published里面的,我们可以参考一下delphi的源码: TControlScrollBar = class(TPersistent) published property ButtonSize: Integer read FButtonSize write SetButtonSize default 0; property Color: TColor read FColor write SetColor default clBtnHighlight; property Increment: TScrollBarInc read FIncrement write FIncrement stored IsIncrementStored default 8; property Margin: Word read FMargin write FMargin default 0; property ParentColor: Boolean read FParentColor write SetParentColor default True; property Position: Integer read FPosition write SetPosition default 0; property Range: Integer read FRange write SetRange stored IsRangeStored default 0; property Smooth: Boolean read FSmooth write FSmooth default False; property Size: Integer read FSize write SetSize default 0; property Style: TScrollBarStyle read FStyle write SetStyle default ssRegular; property ThumbSize: Integer read FThumbSize write SetThumbSize default 0; property Tracking: Boolean read FTracking write FTracking default False; |