クラ

クラス の Java

12個の演習

クラスについて

Javaにおける中心的なオブジェクト指向の構成要素は_クラス_です。クラスは、データ(フィールド、インスタンス変数とも呼ばれます)と振る舞い(メソッド)を組み合わせたものです。 クラスのフィールドとメソッドは、その_メンバー_と呼ばれます。

メンバーへのアクセスは、アクセス修飾子で制御できます。よく使われるのは次の2つです。

  • public: どのコードからでもアクセスできます(制限なし)。
  • private: 同じクラス内のコードからしかアクセスできません。

Javaでは、アクセス修飾子を指定しない場合、デフォルトは_パッケージ可視性_になります。 この場合、そのメンバーは同じパッケージに定義されたすべてのクラスから参照できます。

このように、関連するデータと振る舞いをひとまとめにし、さらにメンバーへのアクセスを制限することをカプセル化と呼びます。これはオブジェクト指向の中核となる概念の1つです。

クラスは、そのクラスのインスタンスを生成するためのテンプレートと考えることができます。 クラスのインスタンスを生成するには(これは_オブジェクト_とも呼ばれます)、newキーワードを使います。

class Car {
}

// Create two car instances
Car myCar = new Car();
Car yourCar = new Car();

フィールドには型と名前(キャメルケースで表記)があり、クラス内のどこにでも定義できます(パスカルケースで表記)。

class Car {
    // Accessible by anyone
    public int weight;

    // Only accessible by code in this class
    private String color;
}

フィールドには、必要に応じて初期値を代入できます。 フィールドに初期値を_指定しない_場合、その型のデフォルト値が設定されます。 インスタンスのフィールドの値は、ドット記法を使って参照したり更新したりできます。

class Car {
    // Will be set to specified value
    public int weight = 2500;

    // Will be set to default value (0)
    public int year;
}

Car newCar = new Car();
newCar.weight; // => 2500
newCar.year;   // => 0

// Update value of the field
newCar.year = 2018;

privateなフィールドは、通常、メソッドを呼び出した副作用として更新されます。 そのようなメソッドは通常、値を返しません。その場合、戻り値の型はvoidにする必要があります。

class CarImporter {
    private int carsImported;

    public void importCars(int numberOfCars)
    {
        // Update private field
        carsImported = carsImported + numberOfCars;
    }
}

なお、Javaのクラスではpublicなフィールドを使うのは一般的ではありません。 通常はprivateなフィールドを使い、ゲッター_と_セッターを通してアクセスします。

クラスの中では、thisキーワードは現在のクラスを指します。 これは、仮引数がフィールドと同じ名前を持つ場合に特に便利です。

class CarImporter {
    private int carsImported;

    public void setImportedCars(int carsImported)
    {
        // Update private field from public method
        this.carsImported = carsImported;
    }
}
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

クラスを学習する