private和public中的问题(10分)

A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
[red]TAddrBook = class
  private
    //一些私有成员
  public
    constructor Create;
    destructor Destroy;override

    GetCurIndex: Integer;
    FindRecord(strString): Integer;
    GetRecord(nIndex:Integer): String;
    SetRecord(nIndex:integer
strRec:String): Boolean;
    AddRecord(strRec:String): Boolean
DelRecord(nIndex):Boolean

    //其它共有成员函数
  end;[/red]
//==========================================
  var Form1: TForm1;
  AddrBook: TAddrBook;
  nCurRec: Integer;

  implementation

  procedure TForm1.FormCreate(Sender: TObject);
  begin
    AddrBook := TAddrBook.Create;
    nCurRec := AddrBook.GetCurIndex;
  end;

  procedure TForm1.FormClose(Sender: TObject
var Action: TCloseAction);
  begin
    AddrBook.Free;
  end;

  //添加按钮
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    if not AddrBook.AddRecord(memo1.Text) then
      ShowMessage("error");
  end;

  //删除按钮
  procedure TForm1.Button2Click(Sender: TObject);
  begin
    if not AddrBook.DelRecord(nCurRec) then
      ShowMessage("error");
  end;

  //修改按钮
  procedure TForm1.Button3Click(Sender: TObject);
  begin
    if not AddrBook.SetRecord(nCurRec, memo1.Text) then
      ShowMessage("error");
  end;

  //查找按钮
  procedure TForm1.Button4Click(Sender: TObject)

  begin
    memo1.Text := AddrBook.GetRecord(FindRecord(memo1.Text));
  end;
我想请问,如果红色这部分代码和后面的内容在同一个单元内,如果其public这部分函数说
明在private中,那么是不是后面的button中click事件可以用AddrBook.方式来使用其中的
变量和函数?
如果这两部分内容在两个单元内,放在private中,还可以这样吗?
 
还可以,因为你是在类“内部”定义的。
 
jsxjd 不要乱发贴,好多错误啊。
放在private内的成员只能在类内部方法中访问,放在protected中的
成员可以在同一unit的其他类中访问.
 

放在同一unit中,子类可以访问父类的private成员。
 
放在同一个单元内是可以的,当放在不同的单元中是不行的
这相当于C++中友类的概念,在C++中用friend关键字实现.
在ObjectPascal是通过放在同一个单元里来实现的.既在相同单元声明的对象都认为是友类,
都可以访问其他对象的私有成员。
 
同意子陵说的
再delphi中就是用这种方法来实现友元的,delphi规定:
在同一单元中,无论是哪种可见级别(private protected public published),都可以随意访问
在不同的单元中,就按照定义的可见级别。
所以,如果是在同一个单元,无论这些红色的定义在哪里,任何一个函数里都可以访问(在这个单元的)
如果在不同的单元,如果定义再private就不能访问了
 
谢谢各位!
 
顶部