比如建一个FORM,代码如下
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
其中
        Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
几句之前没有private,public之类的标志。那这几句代表什么,缺省的情况是默认为public么?
也就是说这几句相当于
    public
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
是这样么?

解决方案 »

  1.   

    缺省情况下类成员的可见性是public
      

  2.   

    Delphi类成员缺省不是public,而是published
      

  3.   

    默认是public
    vcl 控件都是 TPersistent 的继承类,TPersistent 在 vcl 中有非常重要的地位。打开 Classes.pas 可以看到,在 TPersistent 之前有 {$M+} 预编译参数,这个参数有两个作用,一个是打开rtti,另一个是使默认域变为published。而vcl控件都继承自 TPersistent,也就自然继承了这两个属性,TComponent、TControl、TWinControl 等等的默认域也就变成了 published