本文へスキップ
BecomeCoder

Javaオブジェクト指向コース · 第1章 クラスとインスタンス ― オブジェクト指向のはじまり · レッスン1

クラスとインスタンス ― 設計図とその実体

ブラウザで完結

導入

「たい焼きの型」と「焼きあがったたい焼き」。型は1つでも、そこから何個でもたい焼きが作れます。クラスとインスタンスの関係は、まさにこれです。

説明

クラス はデータと処理をまとめた「設計図」、インスタンス はその設計図から作られた「実体」です。

public class Main {
    public static void main(String[] args) {
        Dog pochi = new Dog();   // Dog の設計図からインスタンスを作る
        pochi.name = "ポチ";
        pochi.bark();

        Dog taro = new Dog();    // 別のインスタンス(別の実体)
        taro.name = "タロー";
        taro.bark();
    }
}

class Dog {
    String name;                 // フィールド(属性・データ)

    void bark() {                // メソッド(振る舞い・処理)
        System.out.println(name + "「ワン!」");
    }
}
  • class Dog { ... }Dog というクラス(設計図)の定義。
  • String name;フィールド。インスタンスが持つデータ(ここでは名前)です。
  • void bark() { ... }メソッド。インスタンスができる処理(ここでは吠える)です。
  • new Dog() … 設計図からインスタンスを 生成 します。pochitaro別々の実体なので、それぞれの name は独立しています。
  • pochi.name pochi.bark().(ドット)で、インスタンスのフィールドやメソッドにアクセスします。

同じ Dog クラスから作っても、pochitaro はそれぞれ自分の name を持ちます。ここがクラス(1つの設計図)とインスタンス(複数の実体)の関係の肝です。

やってみよう

下のエディタを実行して、2匹の犬がそれぞれの名前で吠えることを確かめましょう。3匹目の Dog を作って吠えさせてみてください。

演習

Cat というクラスを作り、String name フィールドと、name + "「ニャー」" と表示する meow() メソッドを持たせてください。main でインスタンスを作り、名前を "ミケ" にして meow() を呼び、ミケ「ニャー」 と表示してください。

ヒント1を見る

Dog クラスをまねて class Cat { String name; void meow() { ... } } を書きます。

ヒント2を見る

mainCat c = new Cat(); c.name = "ミケ"; c.meow();

実際に動かしてみよう

下のエディタにJavaを書いて「実行」を押すと、学習用シミュレータが System.out.println の出力を表示します(本物のJVMではなく、教材の範囲を再現した軽量エンジンです)。クラス・継承・コレクションなども動きます。Scanner で入力を読む例は「標準入力」欄に値を入れてください。本文の例を書き換えて動かしてみましょう(Stream・ラムダ・スレッド・ファイル入出力など一部の機能は対象外です)。

Java — ブラウザ内で実行(学習用シミュレータ)

Javaの教材サブセットを動かす学習用シミュレータを読み込みます(本物のJVMではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。