委譲と継承
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/04 03:18 UTC 版)
Smalltalk において、継承とは特殊な委譲に過ぎない。 Objectsubclass:#Derived"DerivedはObjectクラスから派生させる"instanceVariableNames:''"オブジェクトに所属する変数は定義しない"classVariableNames:''"クラスオブジェクトと共有する変数は定義しない"poolDictionaries:''"クラスに所属する変数は定義しない"category:'example'."クラスの分類はexampleとする(今回の名前に意味はない)" このため、例えば上記のクラスオブジェクトの生成では、Derived クラスオブジェクトの基底クラスオブジェクトとして Object を指定しているが、処理系によっては下記の様に #superclass: メッセージを送る事で、基底クラスに別のクラスオブジェクトを指定する事が出来る。 "superclass: NewBase. メッセージを送り基底クラスを NewBase に変更する事が出来る。"Derived superclass: NewBase. 処理系により不可能な事もあるがクラスオブジェクトだけでなく、インスタンスオブジェクトから派生することも出来る。 "インスタンスオブジェクトの nil から派生した Derived クラスを Smalltalk 環境に登録する"nilsubclass:#DerivedinstanceVariableNames:''classVariableNames:''poolDictionaries:''category:'example'. なお通常、派生元の基本となるProtoObjectやObjectはnilから派生しており継承関係は再帰的に循環している。
※この「委譲と継承」の解説は、「Smalltalk」の解説の一部です。
「委譲と継承」を含む「Smalltalk」の記事については、「Smalltalk」の概要を参照ください。
- 委譲と継承のページへのリンク