Presentation is loading. Please wait.

Presentation is loading. Please wait.

第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」

Similar presentations


Presentation on theme: "第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」"— Presentation transcript:

1 第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」
古川 拓弥

2 継承とは あるクラスの定義を引き継いで新しく定義する サブクラスはスーパークラスの機能をすべて利用可能 サブクラスで行うこと
継承の元となるクラス:スーパークラス(superclass) 新しく作るクラス:サブクラス(subclass) サブクラスはスーパークラスの機能をすべて利用可能 サブクラスで行うこと 新しいメソッドの追加 新しいインスタンスの追加 スーパークラスのメソッドを別の定義で置き換える 上書き(override)

3 継承の概念 スーパークラス 継承 継承 サブクラス サブクラス 変数 x :新しく追加 :上書き(override) method1
クラスA 継承 継承 サブクラス サブクラス 変数 x 変数 x method1 method1 method2 変数 y method2 method3 クラスB クラスC サブクラスではスーパークラスのインスタンス変数やメソッドにアクセス可能 インスタンス変数,メソッドの宣言は新たに付け加えるもののみを記述

4 クラスBはクラスDに対してはスーパークラスとなる
継承の概念 変数 x :新しく追加 :上書き(override) method1 method2 クラスA 継承 継承 スーパークラス 変数 x 変数 x method1 method1 method2 変数 y method2 method3 クラスB クラスC 継承 サブクラス 変数 x method1 クラスBはクラスDに対してはスーパークラスとなる method2 method3 クラスD

5 継承の概念 ルートクラス 継承 継承 継承 ルートクラス それ以上スーパークラスを持たないクラス 変数 x :新しく追加
:上書き(override) method1 method2 クラスA 継承 継承 変数 x 変数 x method1 method1 method2 変数 y method2 method3 クラスB クラスC 継承 変数 x それ以上スーパークラスを持たないクラス ルートクラス method1 method2 method3 クラスD

6 すべてのクラスはルートクラスを継承しなければならない
継承関係の宣言 インターフェース部 実装部 @interface クラス名 : スーパークラス { //インスタンス変数の宣言 ・・・ } //メソッドの宣言 @end すべてのクラスはルートクラスを継承しなければならない NSObject @implementation クラス名 //メソッドの定義 ・・・ @end

7 継承するクラスがないときにはNSObjectを継承する
継承の例 インターフェース部 実装部 @interface Car : NSObject { char *name } - (void)printName; @end 継承するクラスがないときにはNSObjectを継承する @implementation Car - (void)printName{ name = “カローラ”; printf(“車の名前は%sです\n”, name); } @end

8 クラス定義とヘッダファイル インターフェース部は1つのヘッダファイルとして作成
#import <Foundation/NSObject.h> @interface Alpha : NSObject { ・・・ } - (void)doSomething @end #import “Alpha.h” @implementation Alpha - (void)doSomething{ ・・・ } @end Alpha.h Alpha.m #import “Alpha.h” @interface Beta : Alpha { ・・・ } @end #import “Beta.h” @implementation Beta ・・・ @end Beta.h Beta.m #import “Beta.h” @interface Gamma : Beta { ・・・ } @end #import “Gamma.h” @implementation Gamma ・・・ [self doSomething]; @end Gamma.h Gamma.m

9 メソッドの呼び出し [self method] self クラス内の他のメソッドの呼び出し 継承 継承 selfという名前にメッセージを送る
クラスA クラスB クラスC method1 method2 method3 method1 method1 method2 method2 method3 [self method1] [self method2] method3 インスタンス化 インスタンス化 メッセージ処理を行っているインスタンス自身 self メッセージ送信 メッセージ送信

10 メソッドの呼び出し [super method] super スーパークラスのメソッドの呼び出し 継承 継承
クラスA クラスB クラスC method1 method2 method3 method1 method1 method2 method2 method3 [super method1] [super method2] method3 継承した親クラスのメソッドを使うことを表す super


Download ppt "第5回 iPhoneアプリ開発勉強会 Objective-C 「継承とクラス」"

Similar presentations


Ads by Google