| English | 意味 |
|---|---|
| class/klæs/ | クラス |
| object/ˈɒbdʒekt/ | オブジェクト |
| blueprint/ˈbluːprɪnt/ | 設計図 |
| instance/ˈɪnstəns/ | インスタンス |
クラスとオブジェクト
- クラスとは設計図であり、ある種類のものが持つものやできることを説明します。
- オブジェクトとは、その設計図から作られた具体的なインスタンスです。
- 一つの
Stringクラスに対し、多くの String オブジェクトが存在します("cat","dog","Ada")。 - クラスがパターンを定義し、各オブジェクトはその埋め込まれたコピーの一つです。
設計図 vs イスタンス
- クッキーカッター(クラス)とクッキー(オブジェクト)と考えます。
- カッターが形を作り、各クッキーは個別の実物です。
- どのオブジェクトも独自のデータを持ちますが、クラスデザインを共有しているためです。
- 一つのオブジェクトを変更しても、他のオブジェクトは変わりません。
ステートと振る舞い
- オブジェクトはステート(そのデータ——インスタンス変数)と振る舞い(そのメソッド)をセットにしています。
Stringオブジェクトのステートは文字列で、振る舞いにはlength()やsubstring()が含まれます。- メソッドを呼び出すことでオブジェクトと相互作用します。
- データ+メソッドのこの束ね方は、オブジェクト指向プログラミングの核心です。
クラスか、それともオブジェクトか?
クラスは設計図であり、オブジェクトはその具体的な实例である。それぞれを分類せよ。
オブジェクトは参照型を持つ
- オブジェクトは参照を通じて保存されます——変数はアドレスを持ち、オブジェクトそのものではありません。
String s = "hi";——sはメモリ上のどこかにあるStringオブジェクトを指しています。- 2つの参照が同じオブジェクトを指すことがあります。
- 参照型はプリミティブ型とは異なる振る舞いをします——次回のレッスンのテーマです。
クラスは型/設計図であり、オブジェクトはその一实例です——混同しないでください。 String はクラス、"cat" はオブジェクトです。各オブジェクトは独自のステートを持つため、2つのStringオブジェクトは独立しています。さらに、オブジェクト変数は直接オブジェクトのバイトではなく参照(アドレス)を保持するため、後でコピーや比較を行う際に重要です。
クラス/オブジェクトの関係:
- クラス:
String(設計図——すべてのStringはlength(),substring()などができます)。 - オブジェクト:
"cat","dog"—— 2つの別個のインスタンスで、それぞれ独自の文字列を持ちます。 "cat".length()は3と同じ振る舞いを持ちますが、"dog".length()は3と独立したステートを持ちます。
クラスはステート(インスタンス変数)と振る舞い(メソッド)を説明する設計図であり、オブジェクトはクラスの具体的なインスタンスです。多くのオブジェクトが1つのクラスのデザインを共有しつつ、それぞれが独自のステートを持ちます。オブジェクトは参照型であり、変数はオブジェクトそのものではなく、オブジェクトのアドレスを格納します。
クラスとオブジェクトの関係は...
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
クラスは設計図であり、オブジェクトはそこから作られた实例である。
クラスから作られた特定のオブジェクトを、そのクラスの ___ という。(単語一つで答えよ)
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
オブジェクトはクラスの实例である。
同じクラスからの2つのオブジェクトは、それぞれ独立した状態を持つ。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
デザインは共有しているが、データは別々に保持している。
オブジェクト変数は実際には...を格納している。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
オブジェクトは参照型である — 変数はアドレスを保持している。
'String s = "cat";' において、String は ___ であり、"cat" は ___ である。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
String はクラス(設計図)であり、"cat" はオブジェクト(实例)である。