クラスの宣言
@interface クラス名 : スーパークラス名{
@インスタンス変数の参照範囲指定
インスタンス変数の宣言 ;
}
メソッドの宣言 ;
@end
カプセル化:インスタンスに対するアクセス制限をすること
インスタンス変数の参照範囲
@public:どこからでも参照可能
@protected:そのクラスとサブクラスからのみ参照可能
@private:そのクラスからのみ参照可能
インスタンスの生成
クラス名 インスタンス名 = [[クラス名 alloc] init ] ;*参照型のインスタンスの場合、インスタンス名の前に * が必要。
インスタンスの利用
インスタンス名 -> インスタンス変数名メソッドの宣言
@implementation クラス名 : ( 引数の型 ) 引数 : …//インスタンス・メッソドの場合
- ( 戻り値の型名 ) インスタンス・メソッド名
{
処理の内容
return 戻り値 ;
}
//クラス・メソッドの場合
+ ( 戻り値の型名 ) クラス・メソッド名
{
処理の内容
return 戻り値 ;
}
@end
*インスタンス変数についてはメソッドの中で宣言・定義しなくてもよい。
メソッドの呼び出し
[ レシーバ メッセージ : 引数 : … ]レシーバ:対象のインスタンス名、またはクラス名
メッセージ:メソッド名
*メソッド内で変更されたインスタンス変数は、メッソドの処理が終了しても
その値は保持される。
*引数にインスタンスを渡し、インスタンス変数の値を変更した場合は、
呼び出し元のインスタンスについても変更される。
*クラス・メソッドはインスタンスを生成しなくても利用できる。
アクセサ:インスタンス変数と値のやりとりのみを行うためのメソッド
セッター:インスタンス変数に値をセットするメソッド
ゲッター:インスタンス変数の値を取り出すメソッド
簡略化した書き方
メソッドの定義
@interface内に@property 型名 インスタンス変数名 ;
@implementation内に
@synthesiza インスタンス変数名 ;
*@propertyを利用して宣言されたインスタンス変数のことを
プロパティと呼ぶことがある。
メソッドの呼び出し
セッター:[ インスタンス名 "set"+インスタンス変数名 : 引数 ] ;ゲッター:[ インスタンス名 インスタンス変数名 ] ;
または
セッター:インスタンス名 . インスタンス変数名
ゲッター:インスタンス名 . インスタンス変数名 = 引数
コメント