Objective-C 基礎(4)- クラスの使い方




§1 クラスを使ってみる

前回と同様のコードを使ってクラスの使い方について説明したいと思います。

ヘッダファイル(TestClass.h)

クラスファイル(TestClass.m)

メインファイル(main.m)

では、作成したTestClassを使ってみることにします。まずはインスタンスを作成します。インスタンスの作成は、クラスに用意されているメソッドを呼び出して行います。具体的には以下のようになります。

一行で書くと、

allocにてメモリ領域を確保してinitで初期化しています。また、インスタンス変数testClassObjには「*」を付けてポインタとしていますが、Objective-Cではクラスを利用するときは基本的にポインタを使用します。「TestClass testClassObj」という記述はNGです。ただしインスタンス変数を宣言する際にid型を使う場合は「*」は付けません。id型は内部で対象オブジェクトへのポインタを持っています。id型を使ってインスタンス作成を記述すると

となります。

§2 クラスの継承とNSObjectについて

さて、TestClassにはメソッドallocもinitも定義されていないのになぜこのメソッドが使えるのか?ということについて説明します。

このTestClassはNSObjectを継承して作られています。クラス宣言時にクラス名に続けて
「:(コロン)+継承元クラス名」
を記述することで継承させることができます。

継承とは、既存のクラスの機能を受け継いで新しいクラスを作ることをいいます。つまり「既存クラスが持っているメソッドや変数をそのまま使える」ということになります。

継承元クラスを「スーパークラス」、継承して新しく作ったクラスを「サブクラス」と呼びます。NSObjectは、TestClassのスーパークラス、そしてTestClassはNSObjectのサブクラスということになります。

Objective-Cで使われるクラスはさまざまなクラスを継承して作られていて、継承元をどんどんたどっていくとNSObjectにたどり着きます。NSObjectは全てのクラスのスーパークラスです。このような一番の継承元となるクラスを「ルートクラス」と呼びます。

先ほどのallocとinitはルートクラスNSObjectで実装されているメソッドなので、NSObjectを継承して作られたTestClassはこのメソッドを使うことができます。allocとinitはルートクラスで実装されているので全てのクラスで使用できるということになります。

実際に自分でクラスを継承して使いこなせるようになるまでは「クラスを作るときはNSObjectを継承して作る」と覚えておけば良いと思います。

Objective-C 基礎 目次

以下の記事も参考にして頂ければと思います。
Objective-C 基礎(1)- Xcodeのインストールとプロジェクトの作成
Objective-C 基礎(2)- Objective-Cの概要とメソッドの呼び出し
Objective-C 基礎(3)- クラス定義の方法
Objective-C 基礎(4)- クラスの使い方
Objective-C 基礎(5)- クラスメソッドとインスタンスメソッド
Objective-C 基礎(6)- 変数のスコープとプロパティ
Objective-C 基礎(7)- 変数のデータ型
Objective-C 基礎(8)- 文字列とNSStringクラス
Objective-C 基礎(9)- 可変文字列とNSMutableStringクラス
Objective-C 基礎(10)- Objective-Cの配列
Objective-C 基礎(11)- Objective-Cの連想配列
Objective-C 基礎(12)- ループ処理
Objective-C 基礎(13)- プロトコル


シェアして頂けると嬉しいです

















チャーム本店



価格.com ブロードバンド

価格.com 自動車保険









■コメントはお気軽にどうぞ