DELPHI面向对象特点保护级类成员应用_第1页
DELPHI面向对象特点保护级类成员应用_第2页
DELPHI面向对象特点保护级类成员应用_第3页
DELPHI面向对象特点保护级类成员应用_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DELPHI面向对象特点保护级类成员应用begin

ifTStringGridEx(StringGrid1).RowCount>5then

TStringGridEx(StringGrid1).DeleteRow(5);

end;

---------------------------------------------------------

这是要在StringGrid中删除一行的代码。这个问题我搞了2个小时没有搞定,然后就搜帖子,发觉这位高人的代码,简直鄙视之情如黄河之水绵绵不绝,运行也通过。但是为啥TStringGridEx=class(TStringGrid);这个东西就可以有DeleteRow()方法呢?它明明也是继承的TStringGrid,和TStringGrid是一样的啊?我头都大了!盼望各位教导!

--------------------------------------------------------------------------------

以上就是楼主提问内容,问题确实惊奇,经过各大掌门的争论得出了一个Delphi特有的爱护级成员的应用特点,这应当也是DELPHI独有的一个面对对象支持特点,总结如下:

--------------------------------------------------------------------------------

1.TForm里面可以访问到TStringGridEx的protected成员,由于它们定义在同一个单元里面

2.TForm里面不能访问到TStringGrid的protected成员,由于他们不是定义在同一个单元里面

3.由于TStringGridEx=class(TStringGrid),所以在这里访问TStringGridEx的protected成员就相当于访问TStringGrid的protected成员

4.TStringGridEx只是一个中介,功能没有扩展但是把TStringGrid的作用域引入到这个单元中来了,所以TForm可以访问TStringGrid的protected成员了

掌门一的看法是DELPHI的PROTECTED和PRIVATE成员对于同一UNIT里面的各种类和对象都是可见的,而且PROTECTED成员可以在友员子类的UNIT中可见,于是TStringGridEx哪怕只是继承了TStringGrid没作任何修改,也令TStringGrid中的PROTECTED成员在TStringGridEx的UNIT中可见(这其中还有一个缘由是TStringGrid并不是定义在本UNIT,所以只能通过继承使本UNIT成为友员,使TStringGrid的PROTECTED成员开放),问题解决了。我们也从中可以一窥DELPHI的面对对象特点。

--------------------------------------------------------------------------------

掌门二的评论:在同一个单元定义的两个类甚至可以相互访问对方的private成员

虽然便利了开发,但是很能迷惑初学者

甚至感觉不够严谨

不过反正delphi也风光不再了,凑乎用吧

掌门三的评论:没有完善的东西啊!只有适合的东西哦!

掌门四的评论:protected起来的方法一般是隐蔽的,所以直接生成该类的实例是不能引用该方法的,但是在delphi中将位于同一个单元的类自动认为是友类,可以访问其protected方法,所以在相应单元中写一个子类的实现就可以看到protected起来的方法了

--------------------------------------------------------------------------------

个人觉得DELPHI对PROTECTED和PRIVATE在本单元可见的做法既便利了程序员又迷惑了程序员,使得许多以上的例子满惊奇的,固然这也令程序员增加了很多制造发挥技巧的时机,以上例子就是一个奇妙应用技巧的经典范例,不过个人觉得这些时机还是少一点好。无论如何,可读性才应当是程序员真正追求的代码境地,这些惊奇的技巧性代码,假如我使用其他语言一段时间以后再回来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论