あるサンプルで
hogeクラス名(hogeクラスのオブジェクト).メソッド名
という文法があり、入門書を読んでも分かりませんでした。
ためしに以下のようなコードを書いて実験してみたところ、
そのオブジェクトのメソッドにアクセスしているようです。
program Test;
{$APPTYPE CONSOLE}
type
TPerson = class(TObject)
private
name: String;
procedure setName(val : string);
function getName : string;
end;
procedure TPerson.setName(val : string);
begin
name:=val;
end; { TPerson }
function TPerson.getName:string;
begin
Result:=name; { 戻り値 }
end;
var
hoge : TPerson;
begin
hoge:=TPerson.Create;
hoge.setName('Yukari Tanaka');
writeln(hoge.getName());
writeln(TPerson(hoge).getName);
hoge.Free;
end.
これは専門用語ではなんと言うのでしょうか?
googleで調べるキーワードは何が良いでしょうか?
開発環境:Delphi 6.0
OS:WindowsXP
型キャスト または キャスト と言います。
オブジェクトがクラスのインスタンスである場合は、自分自身または上位クラスに
キャストするのは正しい文法です。下位クラスへキャストするときは、is で
正しい下位クラスであることを確認してからキャストします。たとえば Form1
に Button1 を置いて、その OnClick イベントハンドラを
procedure TForm1.Button1Click(Sender: TObject);
begin
if Sender is TButton then TButton(Sender).Caption := '押したね!';
end;
のようにすると、分かります。 TObject クラスには Caption プロパティーが
ないのでキャストしてからアクセスします。そのほか、VCL では兄弟クラスや
叔父クラスにもキャストしてその protected フィールドにアクセスする方法も
あるようです。キャストの意味がわかれば OOP のうち、継承と多態について
理解できるようになります。また、隠蔽についても一部関係しています。
りおりお様、お返事ありがとうございます。
型キャストまたはキャストだったんですね。
自分自身を引数に入れているので、気が付きませんでした。
また、Sender : TObject の扱いについてのサンプルを提示してくださり
役に立ちました。
>キャストの意味がわかれば OOP のうち、継承と多態について
>理解できるようになります。また、隠蔽についても一部関係しています。
大変勉強になります。
ありがとうございました。
ツイート | ![]() |