对你说的没错,就是这样理解。<br>下面是我写的给你的一个示例类的代码,供你参考。<br><br>unit ClassExample;<br><br>interface<br><br>uses<br> SysUtils, Dialogs;<br><br>type<br> TSex = (Male,Female);<br> {***********************************************************************<br> 这里声明一个THuman的类。这个类有三个属性,分别是:<br> Race属性,该属性是一个既有写方法也有读方法的属性。<br> 而且该属性仅能够设置为Chinese或USA这两个值,<br> 在读取该属性时,若FAge数据成员没有赋值,则<br> 返回未赋值信息;<br> Age属性:该属性有一个写方法,且仅能够对该属性赋0~150之间的值;<br> Sex属性:该属性既没有读方法,也没有写方法。<br> 不过仅能够对其赋Male或Female其中之一的值。<br><br> 最后,该类还有一个构造函数用于为该类实例设置Age与Sex的缺省值<br> **********************************************************************}<br> THuman = class //声明一个人类<br> private<br> FRace: String; //人的种族<br> FAge: Integer; //人的年龄<br> FSex: TSex; //人的性别<br><br><br> function GetRace: String; //种族的读取方法<br><br> procedure SetRace(const aRace: String); //种族的设定方法<br> procedure SetAge(const anAge: Integer); //年龄的设定方法<br><br> public<br> constructor Create; overload;<br> published<br> property Race: String read GetRace write SetRace; //既有写方法,也有读方法的属性<br> property Age: Integer read FAge write SetAge; //只有写方法的属性<br> property Sex: TSex read FSex write FSex; //既没有写方法,也没有读方法的属性<br> end;<br><br>implementation<br><br>constructor THuman.Create;<br>begin<br> inherited;<br> FAge := 20;<br> FSex := Male;<br>end;<br><br>function THuman.GetRace: String;<br>begin<br> if FRace = '' then<br> Result := 'Have no Race!'<br> else<br> Result := FRace;<br>end;<br><br>procedure THuman.SetRace(const aRace: String);<br>var<br> strTmp: String;<br>begin<br> strTmp := Trim(aRace);<br> if ((strTmp = 'Chinese') or (strTmp = 'USA')) then<br> FRace := strTmp<br> else<br> ShowMessage('Not a legal Race!');<br>end;<br><br>procedure THuman.SetAge(const anAge: Integer);<br>begin<br> if (anAge < 0) or (anAge > 150) then<br> begin<br> ShowMessage('Not a legal Age!');<br> Exit;<br> end;<br>end;<br><br>end.