10
iPhone 第第第第第第第第 Objective-C 第第第第第第第 「」 第第 第第

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

  • Upload
    eben

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

第5回 iPhone アプリ開発勉強会 Objective-C 「継承とクラス」. 古川 拓弥. 継承とは. あるクラスの定義を引き継いで新しく定義する 継承の元となるクラス: スーパークラス (superclass) 新しく作るクラス: サブクラス (subclass) サブクラスはスーパークラスの機能をすべて利用可能 サブクラスで行うこと 新しいメソッドの追加 新しいインスタンスの追加 スーパークラスのメソッドを別の定義で置き換える. 上書き (override). method1. method1. method2. method1. - PowerPoint PPT Presentation

Citation preview

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

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

古川 拓弥

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

継承とは• あるクラスの定義を引き継いで新しく定義する

- 継承の元となるクラス:スーパークラススーパークラス (superclass)(superclass)- 新しく作るクラス:サブクラスサブクラス (subclass)(subclass)

• サブクラスはスーパークラスの機能をすべて利用可能• サブクラスで行うこと

- 新しいメソッドの追加- 新しいインスタンスの追加- スーパークラスのメソッドを別の定義で置き換える

上書き上書き (override)(override)

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

継承の概念

クラス A

変数 x method1

method2

変数 x method1

method2

method3

クラス B

変数 x method1

method2変数 y

クラス C

継承 継承

スーパークラススーパークラス

サブクラスサブクラス サブクラスサブクラス

•サブクラスではスーパークラスのインスタンス変数やメソッドにアクセス可能•インスタンス変数,メソッドの宣言は新たに付け加えるもののみを記述

:新しく追加:上書き( overrid

e )

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

継承の概念

クラス A

変数 x method1

method2

変数 x method1

method2

クラス B

変数 x method1

method2

クラス C

スーパークラススーパークラス

サブクラスサブクラス

変数 x method1

method2

method3

クラス D

クラス B はクラス D に対してはスーパークラスとなる

継承 継承

method3 変数 y

:新しく追加:上書き( overrid

e )

継承

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

継承の概念

クラス A

変数 x method1

method2

変数 x method1

method2

クラス B

変数 x method1

method2

クラス C

変数 x method1

method2

method3

クラス D

ルートクラスルートクラス

それ以上スーパークラスを持たないクラス

ルートクラスルートクラス

継承 継承

method3 変数 y

:新しく追加:上書き( overrid

e )

継承

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

継承関係の宣言

• インターフェース部

• 実装部

すべてのクラスはルートクラスを継承しなければならない

すべてのクラスはルートクラスを継承しなければならない

NSObject

@interface クラス名 : スーパークラス{

// インスタンス変数の宣言・・・

}// メソッドの宣言

@end

@implementation クラス名// メソッドの定義

・・・@end

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

• インターフェース部

• 実装部

継承の例

@interface Car : NSObject{char *name

}- (void)printName;

@end

継承するクラスがないときにはNSObjectNSObject を継承する

@implementation Car- (void)printName{name = “ カローラ” ;printf(“ 車の名前は %s です \n”, name);

}@end

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

クラス定義とヘッダファイル

• インターフェース部は 1 つのヘッダファイルとして作成#import <Foundation/NSObject.h>

@interface Alpha : NSObject{

・・・}- (void)doSomething@end Alpha.hAlpha.h

#import “Alpha.h”

@implementation Alpha- (void)doSomething{

・・・}

・・・@end

Alpha.mAlpha.m

#import “Alpha.h”

@interface Beta : Alpha{

・・・}

・・・@end

Beta.hBeta.h

#import “Beta.h”

@implementation Beta・・・

・・・

@endBeta.mBeta.m

#import “Beta.h” @interface Gamma : Beta{

・・・}

・・・@end

Gamma.hGamma.h

#import “Gamma.h”

@implementation Gamma・・・[self doSomething];・・・

@endGamma.mGamma.m

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

メソッドの呼び出し

• クラス内の他のメソッドの呼び出し

- self という名前にメッセージを送る [self method]

method1

method2

method3

クラス A 継承

method1

method2

method3[self method1][self method2]

継承

method1

method2

method3

クラス B クラス C

メッセージ送信 メッセージ送信

インスタンス化 インスタンス化

メッセージ処理を行っているインスタンス自身

selfself

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

メソッドの呼び出し

• スーパークラスのメソッドの呼び出し

- super という名前にメッセージを送る [super method]

method1

method2

method3

クラス A 継承

method1

method2

method3[super method1][super method2]

継承

method1

method2

method3

クラス B クラス C

継承した親クラスのメソッドを使うことを表す

supersuper