クラス・インスタンス・メソッド

クラスの宣言

@interface クラス名 : スーパークラス名
{
@インスタンス変数の参照範囲指定
   インスタンス変数の宣言 ;
}
メソッドの宣言 ; 
@end

   カプセル化:インスタンスに対するアクセス制限をすること
     インスタンス変数の参照範囲
     @public:どこからでも参照可能
     @protected:そのクラスとサブクラスからのみ参照可能
     @private:そのクラスからのみ参照可能


インスタンスの生成

クラス名 インスタンス名 = [[クラス名 alloc] init ] ;
  *参照型のインスタンスの場合、インスタンス名の前に * が必要。


インスタンスの利用

インスタンス名 -> インスタンス変数名


メソッドの宣言

@implementation クラス名 : ( 引数の型 ) 引数 : …
//インスタンス・メッソドの場合
- ( 戻り値の型名 ) インスタンス・メソッド名
{
   処理の内容
   return 戻り値 ;
}
//クラス・メソッドの場合
+ ( 戻り値の型名 ) クラス・メソッド名
{
   処理の内容
   return 戻り値 ;
}
@end
  *インスタンス変数についてはメソッドの中で宣言・定義しなくてもよい。


メソッドの呼び出し

[ レシーバ メッセージ : 引数 : … ]
   レシーバ:対象のインスタンス名、またはクラス名
   メッセージ:メソッド名

  *メソッド内で変更されたインスタンス変数は、メッソドの処理が終了しても
   その値は保持される。
  *引数にインスタンスを渡し、インスタンス変数の値を変更した場合は、
   呼び出し元のインスタンスについても変更される。
  *クラス・メソッドはインスタンスを生成しなくても利用できる。



アクセサ:インスタンス変数と値のやりとりのみを行うためのメソッド
   セッター:インスタンス変数に値をセットするメソッド
   ゲッター:インスタンス変数の値を取り出すメソッド

   簡略化した書き方

   メソッドの定義

   @interface内に
   @property 型名 インスタンス変数名 ; 
  
   @implementation内に
   @synthesiza インスタンス変数名 ;

      *@propertyを利用して宣言されたインスタンス変数のことを
       プロパティと呼ぶことがある。


   メソッドの呼び出し

セッター:[ インスタンス名 "set"+インスタンス変数名 : 引数 ] ;
   ゲッター:[ インスタンス名 インスタンス変数名 ] ;
     または
   セッター:インスタンス名 . インスタンス変数名
   ゲッター:インスタンス名 . インスタンス変数名 = 引数





コメント