delphi面向对象:DELPHI面向对象支持特点--保护级类成员的应用来源: 发布时间:星期三, 2008年9月24日 浏览:35次 评论:0
今天在CSDN论坛里面游逛,发现这样的一个帖子《刚才看到一位武林高手的几行精妙代码,百思不得其解,希望各位指点》,本着向各大武林高手学习的态度,我看完了整个帖子,发现内容甚为经典,记录于此,作个总结: type procedure TForm1.Button1Click(Sender: TObject); 这是要在StringGrid中删除一行的代码。这个问题我搞了2个小时没有搞定,然后就搜帖子,发现这位高人的代码,简直敬佩之情如黄河之水绵绵不绝,运行也通过。但是为啥TStringGridEx = class(TStringGrid);这个东西就可以有DeleteRow()方法呢?它明明也是继承的TStringGrid,和TStringGrid是一样的啊?我头都大了!希望各位指点! 以上就是楼主提问内容,问题的确奇怪,经过各大掌门的讨论得出了一个DELPHI特有的保护级成员的应用特点,这应该也是DELPHI独有的一个面向对象支持特点,总结如下: 1.TForm里面可以访问到TStringGridEx的protected成员,因为它们定义在同一个单元里面 掌门一的看法是DELPHI的PROTECTED和PRIVATE成员对于同一UNIT里面的各种类和对象都是可见的,而且PROTECTED成员可以在友员子类的UNIT中可见,于是TStringGridEx 哪怕只是继承了TStringGrid没作任何修改,也令TStringGrid中的PROTECTED成员在TStringGridEx的UNIT中可见(这其中还有一个原因是TStringGrid并不是定义在本UNIT,所以只能通过继承使本UNIT成为友员,使TStringGrid的PROTECTED成员开放),问题解决了。我们也从中可以一窥DELPHI的面向对象特点。 掌门二的评论:在同一个单元定义的两个类甚至可以互相访问对方的private成员 虽然方便了开发,但是很能迷惑初学者 甚至感觉不够严谨 不过反正delphi也风光不再了,凑乎用吧 个人觉得DELPHI对PROTECTED和PRIVATE在本单元可见的做法既方便了程序员又迷惑了程序员,使得很多以上的例子满奇怪的,当然这也令程序员增加了许多创造发挥技巧的机会,以上例子就是一个巧妙应用技巧的经典范例,不过个人觉得这些机会还是少一点好。无论如何,可读性才应该是程序员真正追求的代码境界,这些奇怪的技巧性代码,如果我使用其他语言一段时间以后再回来看它,可能怎样都无法想到问题的解答。不过既然选择的DELPHI也就选择了它的缺点,这有点像一对相爱的恋人,选择了对方也就等于选择了他的优点和缺点,世上本没有完美的东西,我们只能适应不完美,追求完美。 0
相关文章
读者评论
发表评论 |