<div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Yup!<br>
<br>
Of course, there are pros and cons to all this. Our once simple, straightforward language is not littered with "convenience" features that are not necessary at all. For example, what is the big advantage of class methods over simple functions and procedures?<br>
</blockquote><div><br>Class methods can be virtual and have access to other (perhpas protected) class members of the class.<br><br>type<br>  TA = class<br>  public<br>    class procedure Hello; virtual;<br>  end;<br><br>  TB = class(TA)<br>
  public<br>    class procedure Hello; override;<br>  end;<br><br>  TAClass = class of TA;<br><br>{ TA }<br><br>class procedure TA.Hello;<br>begin<br>  ShowMessage('Hello this is ' + ClassName); // see I can access ClassName<br>
end;<br><br>{ TB }<br><br>class procedure TB.Hello;<br>begin<br>  inherited Hello;<br>  ShowMessage('A different message here');<br>end;<br><br>{ TForm1 }<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>
var<br>  SomeClass: TAClass;<br>begin<br>  SomeClass := TB;<br>  SomeClass.Hello;<br>end;<br><br></div></div>