@@@关于类的定义,以及私有公有的问题@@@(5分)

  • 主题发起人 主题发起人 3333W
  • 开始时间 开始时间
3

3333W

Unregistered / Unconfirmed
GUEST, unregistred user!
范例程序如下:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)

myform = class(Tform) <----为什么我在此处定义一个类就报错? (问题1)


private
{ Private declarations } <----此处为私有说明 (问题2)



public
{ Public declarations } <----此处为公有说明 (问题2)




end;

var <----此处定义的变量,到底属于公有,还是私有?其它单元既然可以访问,
那应该属于公有,那还要public区域干
什么用,我实在是不明白? (问题2)
Form1: TForm1



implementation

{$R *.DFM}

var <----此处定义的变量,属于私有,那上面还要private干什么用,
可否告知那两个区域的具体用法? (问题2)
.....
.....


type
myform = class(Tform)
<----而在此处定义就没有问题,这是为啥??? (问题1)



end.
 
如果你是两个对象,应该这样申明
type
TForm1 = class(TForm);
type
myform = class(Tform)
如果你是一个对象中的属性,应该这样申明
type
TForm1 = class(TForm);
myform = class(Tform)
 

myform = class(Tform) <----为什么我在此处定义一个类就报错? (问题1)
你在这定义这个类即是TForm1 = class(TForm)的一个成员了,而TForm1是不能有窗体类的成员存在!所以错!

<----此处定义的变量,到底属于公有,还是私有?其它单元既然可以访问,
那应该属于公有,那还要public区域干
什么用,我实在是不明白? (问题2)
这里定义的是这个单元的内部变量,是实例的内部变量(只有实例化才能其它单元可以访问),
public区域是类的公共区,是类的成员,每个实例都有它的自已成员。
区别:如果一个类有多个实例,那么其每个类都有自己的Public成员!Public成员是属于类的实例的!
而Var定义的变量在这只有一个!属于该单元的!

 
//--------------------------------------------------------------------------------
var <----此处定义的变量,到底属于公有,还是私有?其它单元既然可以访问,
那应该属于公有,那还要public区域干
什么用,我实在是不明白? (问题2)
Form1: TForm1

//---------------------------------------------------------------------
共有變量私有變量是針對類而進行的定義,也就是說在定義類的過程中可以定義這個類的
私有成員,共有成員。而僅限於定義類的過程。而此例中類的定義過程為
type
TForm1 = class(TForm)
private
{ Private declarations } <----此处为私有说明 (问题2)
public
{ Public declarations } <----此处为公有说明 (问题2)
end;//此處類的定義結束
以後的定義過程不再屬於類的范疇,所以不存在私有,共有的問題


 
问题2主要是没有分清变量的作用域。
建议楼主看看《Delphi 6开发应用指南》的第二章就清楚了,
http://www.playicq.com/dispdoc.php?t=&amp;id=2511有下载。
 
是啊
Delphi 的基础是 Object pascal,是支持对象的Pascal语言
但是为了向前的Pascal语言兼容,所有只能在原来的Pascal基础上增加新特性
所以造成了这中混淆的现象。
建议你从Pascal语言->Object Pascal,这样会很清楚的
 
所谓公有私有,是指一个类的成员,而你指定的变量,不是属于某一个类的,因而无所谓公有私有。
不过,在单元接口部分声明的变量,凡引用了本单元的单元均可使用,而在实现部分声明的
变量,只能在本单元内使用。
 
type
TForm1 = class(TForm)

myform = class(Tform)
.....
该成
type
TForm1 = class(TForm)
End;
myform = class(Tform)
 
老大

你少写了一个分号
 
哈哈!笑死
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部