クラス定義
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/02 08:13 UTC 版)
「Objective-C」の記事における「クラス定義」の解説
Objective-Cのクラスは定義部と実装部に分かれており、通常定義部を.hファイル、実装部を.mファイルに記述する。後述のカテゴリによりクラス定義を複数のパートに分割できる。 // クラスの定義 (MyObject.h)@interface MyObject : NSObject{ int val; id obj;}+ (void)classMethod:(id)arg; // クラスメソッド- (id)method:(NSObject*)arg1 with:(int)arg2; // インスタンスメソッド。arg1は型付き@end // 実装 (MyObject.m)@implementation MyObject+ (void)classMethod:(id)arg{ // some operation}- (id)method:(NSObject*)arg1 with:(int)args2{ return obj;}// 典型的なinit- (id)init{ self = [super init]; // スーパークラスの呼びだし if(self != nil) { val = 1; obj = [[SomeClass alloc] init]; } return self;}// deallocは自身のリソースを解放してからスーパークラスに回す- (void)dealloc{ [obj release]; [super dealloc];}@end メソッドにはクラスメソッドとインスタンスメソッドがあり、それぞれ接頭辞+及び-により区別される。クラスメソッドはクラスオブジェクトの操作に、インスタンスメソッドはインスタンスオブジェクトの操作に使用される。クラスメソッドは特にインスタンスオブジェクトの生成にも使用される事が多い。インスタンスメソッドは、インスタンスオブジェクトにメッセージを送信した際に起動され、クラスメソッドはクラスオブジェクトにメッセージを送信した際に起動する。なお、インスタンスメソッドとクラスメソッドは全く同じ名前のセレクタを指定して定義できる。 いわゆるコンストラクタは存在しない。慣習として新規オブジェクトの生成は+allocで、初期化は-initで行われるが、プログラマが自由に別の特殊化したメソッドを定義することが可能であり、初期化中に別の初期化メソッドを呼びだす場合もある。一方デストラクタ(ファイナライザ)に相当するものは-dealloc、またはガベージコレクション使用時の-finalizeで、これらのメソッドはオブジェクトの破壊時に必ず呼び出される。 selfは特殊な変数で、メソッドの実行時に自動的にレシーバが代入される。再代入も可能であり、-init等でスーパークラスの実装で自分自身を初期化し、正しい値が返った時のみ継続して初期化を行なうなどに利用される。 オブジェクトの型はオブジェクトを特定のクラスに制限したい時に用いられる。ただしこれはソースコードでのみ意味を持ち、実行レベルでは全てidとして扱われる。また型付きのオブジェクトはインスタンス変数を構造体互換でアクセスできる。保護レベルはpublic(フリー)、protected(継承クラスのみ)、private(同一クラスのみ)があり、デフォルトはprotectedである。ただメモリ管理の一貫性などの理由から、ほとんどの場合アクセサを用いる。
※この「クラス定義」の解説は、「Objective-C」の解説の一部です。
「クラス定義」を含む「Objective-C」の記事については、「Objective-C」の概要を参照ください。
クラス定義
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/21 23:55 UTC 版)
Groovyコードはクラス定義中にある必要はなく、クラス定義の外側でのメソッドの定義や実行文の記述が可能である。 以下、ファイル名が HelloTest.groovy とする println "Hello, World!" すると、 class HelloTest { public HelloTest() { println "Hello, World!" } public static void main(String[] args) { new HelloTest() }} と同じ意味を持つ。
※この「クラス定義」の解説は、「Groovy」の解説の一部です。
「クラス定義」を含む「Groovy」の記事については、「Groovy」の概要を参照ください。
クラス定義
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/21 15:31 UTC 版)
C++では、関数プロトタイプはクラス定義にも使われる。クラスに属するメンバー関数などの宣言(または定義)をクラス定義のブロック内に記述する必要がある。 #include
※この「クラス定義」の解説は、「関数プロトタイプ」の解説の一部です。
「クラス定義」を含む「関数プロトタイプ」の記事については、「関数プロトタイプ」の概要を参照ください。
- クラス定義のページへのリンク