Javaクラス(Class)

Javaの中核はクラスです。クラスはオブジェクトの形式と特性を定義するため、Java言語全体における論理的な構成であり、オブジェクト指向プログラムの基礎を形成します。クラスはインスタンスのオブジェクトを生成してプログラムを作成します。

プログラミングは建物に例えられることがよくあります。ここでも建築に例えると、クラス(Class)は建物の設計図であり、建築設計図によって作られた建物をオブジェクト(Object)と見ることができます。オブジェクトは、私たちがよく見るすべての物や生物などに例えられます。

クラスメンバー

メンバー(member)は構成員という意味を持ちます。クラスにも構成員があり、大きくクラスの属性にあたるメンバー変数部分と、クラスの機能にあたるコンストラクタおよびメソッド定義部分で構成されます。

  • クラス
    • メンバー変数(Member variable)
    • メンバーメソッド(Member method)
    • コンストラクタ(Constructor)
      • 通常メソッド

クラス定義

クラスは次のような構成で定義されます。

 [public/private] [final/abstract] class クラス名 {
     // メンバー変数
     // コンストラクタ
     // メソッド
}

簡単なコードは次のとおりです。

package com.devkuma.tutorial.clazz;

public class MyClass {

    // メンバー変数
    int a;

    /**
     * コンストラクタ
     */
    public MyClass() {
        // コンストラクタの内容
    }

    /**
     * メソッド
     */
    public void method() {
        // メソッドの内容
    }
}

クラス宣言

クラスを宣言することは、新しい型を作成することと同じです。

クラス名は大文字で始めるのが慣例です。

アクセス制御修飾子(Access control modifiers)

  • public

    • publicは、すべてのクラスからオブジェクトを生成できます。
  • private

    • privateは、他のクラスでは内部(inner)クラスからのみ生成できます。
  • アクセス修飾子を使用しない

    • アクセス修飾子を使用せずに宣言されたクラスは、同じパッケージ内のクラスからのみオブジェクトを生成できます。

finalクラス

finalが付いたクラスはサブクラスを持てません。つまり、継承できないクラスを意味します。現在のクラスを他のクラスから継承できないようにすることは、情報保護の面で有用です。

継承の概念は別の章で改めて詳しく説明します。

abstractクラス

abstractが付いたクラスは抽象クラスを意味します。抽象クラス自体ではオブジェクトを生成できず、サブクラスで必ず継承してから使用できるクラスです。

抽象クラスの概念は別の章で改めて詳しく説明します。

オブジェクトの生成 - newキーワード

オブジェクトを生成するとは、オブジェクトのメモリを動的に割り当てることを意味します。

クラスを使ってオブジェクトを生成する方法は、まず通常のデータ型宣言と同じように、クラス型の変数を宣言します。

クラス(Class)とオブジェクト(Object)は混用されることもありますが、互いに異なる項目です。クラスはオブジェクトの形式を定義しますが、オブジェクトそのものではありません。オブジェクトはクラスに基づく具体的なエンティティであり、クラスのインスタンス(instance)とも呼ばれます。

オブジェクトを宣言するには、変数を宣言する場合と同じです。まずクラス名が先に来て、次にオブジェクト変数名が来ます。

クラス名 オブジェクト変数名;
MyClass myclass;

オブジェクトを生成するには、newキーワードを使用します。newキーワードの後には、オブジェクトの基になるクラス名が来ます。

オブジェクト変数名 = new クラス名();
myclass = new MyClass();

オブジェクトの宣言と生成を一度に行うこともできます。

クラス名 オブジェクト変数名 = new クラス名();
MyClass myclass = new MyClass();