【Java入門】クラスの使い方総まとめ


Javaのクラスって何?
クラスの使い方を知りたい

Javaではさまざまなクラスの使い方ができます。

ここではクラスの使い方の基本から、クラスの継承、final修飾子の指定、内部クラスなど応用的な使い方まで詳しく解説していきます。

※この記事ではJavaの「バージョン8」で動作確認しました。

Javaのクラス

そもそもクラスとは

クラスとは、プログラムを実行するための処理をまとめたオブジェクトで、クラスの処理の中にはメンバ変数や処理を実行するためのメソッドがあります。

ちなみに、メンバ変数とはクラス内で使用する変数のことで、メソッドとはメンバ変数などを使って行う処理をひと塊にまとめたものです。

クラスは以下のように記述します。

class クラス名 {
   実行処理...
}

インスタンスとオブジェクト

Javaのようなオブジェクト指向のプログラミング言語では、処理をまとめたクラスを実行するためには、そのクラスのオブジェクトを生成する必要があります。

そして、生成したクラスのオブジェクトから、そのクラスのメンバ変数を参照したり、メソッドを呼び出して使用します。クラスの中のメソッドを呼び出すためには、以下のように記述します。

class ClassSample {
   // メソッドの宣言・定義
   void methodSample(){
       実行処理...
   }
}
//オブジェクトを生成
ClassSample cl = new ClassSample();
 
//メソッドの呼出し
cl.methodSample();

クラスのオブジェクトを生成する方法は変数を宣言する方法と似ていて、クラス名のあとにオブジェクト名を記述します。オブジェクトにはnew演算子を使って生成するインスタンスを格納します。

なお、クラスのオブジェクトは異なるオブジェクト名でいくつでも生成することが可能です。

クラスの基本

基本的な使い方

ここではクラスの基本的な使い方を確認するために、以下の内容のプログラムを作成します。

  • 参照するクラスのオブジェクト変数を生成
  • そのクラスのメンバ変数の参照
  • メソッドの呼出し
  • 取得した値を出力

「TestClass.java」「Main.java」ファイルを作成し、それぞれ以下のプログラムを記述します。

// TestClass.java
class TestClass {
    // メンバ変数
    public String name = "Samurai";
    
    // メソッド
    public String testMethod(){
        return "Engineer";
    }
}

// Main.java
public class Main {
 
    public static void main(String[] args) {
        //クラスのオブジェクトを生成
        TestClass c = new TestClass();
        
        //メンバ変数を参照する
        String str1 = c.name;
        
        //メソッドの呼出し
        String str2 = c.testMethod();
        
        //結果を出力
        System.out.println(str1 + str2);
    }

}

ファイルを保存したら、プログラムのコンパイル、実行してみましょう。

> javac Main.java

コンパイルが成功すると、Main.classとTestClass.classが作られます。実行するには、コマンドラインで以下のようにmainメソッドが存在するクラス名を指定して実行するとプログラムが処理されます。

> java Main
SamuraiEngineer

このようにクラスのオブジェクトを生成して、そのクラスのメンバやメソッドを参照するのが、クラスの基本的な使い方となります。

引数ありのコンストラクタ

クラスにはインスタンス生成の際に、引数を使って値を渡すことができます。インスタンス生成時にクラスに値を渡すためには、引数ありのコンストラクタが必要となります。コンストラクタは以下のように記述します。

// TestClass.java
class TestClass {
    // メンバ変数
    public String name;
    
    // 引数ありのコンストラクタ
    public TestClass(String name) {
        this.name = name;
    }
    
    // メソッド
    public String testMethod(){
        return "Engineer";
    }
}

// Main.java
public class Main {
 
    public static void main(String[] args) {
        //クラスのオブジェクトを生成
        TestClass c = new TestClass("Samurai");
        
        //メンバ変数を参照する
        String str1 = c.name;
        
        //メソッドの呼出し
        String str2 = c.testMethod();
        
        //結果を出力
        System.out.println(str1 + str2); // SamuraiEngineer
    }

}

サンプルでは、引数ありのコンストラクタTestClassを宣言・定義しています。コンストラクタの名前はクラス名と同じにする必要があります。クラスのインスタンスを生成する際に引数を指定して、TestClassクラスのメンバ変数に値を渡しています。

コンストラクタの使い方については、こちらで詳しく解説していますので、ぜひ参考にしてくださいね。

【Java入門】コンストラクタの使い方総まとめ(クラス/インスタンス)
更新日 : 2019年4月8日

staticなメンバをクラス名から呼び出す

先ほど、クラスのメンバ変数やメソッドを呼び出すためにはオブジェクトを生成する必要があると説明しました。しかし、オブジェクトを生成しないでメンバ変数やメソッドを呼び出す方法があります。

メンバ変数やメソッドにstatic修飾子を付けて宣言するとクラス名から呼び出すことができます。

// TestClass.java
class TestClass {
    // メンバ変数
    public static String name = "Samurai";
    
    // メソッド
    public static String testMethod(){
        return "Engineer";
    }
}

// Main.java
public class Main {
 
    public static void main(String[] args) {
        //メンバ変数を参照する
        String str1 = TestClass.name;
        
        //メソッドの呼出し
        String str2 = TestClass.testMethod();
        
        //結果を出力
        System.out.println(str1 + str2); // SamuraiEngineer
    }

}

サンプルでは、TestClassクラスのメンバ変数およびメソッドにstatic修飾子を付けています。このメンバ変数やメソッドは、オブジェクトではなくクラス名から呼び出しています。

static修飾子が付いたメンバ変数やメソッドの使い方については、こちらで詳しく説明していますので参考にしてくださいね。

【Java入門】static変数(クラス変数)の使い方
更新日 : 2019年4月4日
【Java入門】staticメソッドの書き方・使い方まとめ
更新日 : 2019年5月28日

クラスの応用

クラスの継承

クラスの継承とは、クラスが保持しているメンバやメソッドの内容を他のクラスで継承することを指します。

継承元のクラスのことを「スーパークラス」「親クラス」などと呼び、継承したクラスのことを「サブクラス」「子クラス」などと呼びます。親クラスを継承するためにはextendsを指定します。

class 親クラス名 {
    実行処理...
}

class 子クラス名 extends 親クラス名 {
    実行処理...
}

クラスの継承方法の詳細については、以下の記事で詳しく解説しています!

今からでも遅くない!クラスの継承(extends)を学ぼう!【Java】
更新日 : 2018年10月26日

内部クラス

内部クラス(インナークラス)とは、クラスの中にクラスを作成する記述方法です。通常Javaは1ファイル1クラスですが、簡単な処理でファイルをわざわざ分けたくない場合に使用します。内部クラスは以下のように記述します。

class クラス名1 {
    class クラス名2 {
        実行処理...
    {
}

内部クラスの詳細な使い方については、以下の記事で詳しく解説しています!

【Java】内部クラス(インナークラス)の使い方(static class)
更新日 : 2019年4月16日

final class

クラスにfinal修飾子を指定すると、そのクラスは子クラスで継承することはできません。クラスをfinalで指定するには、以下のように記述します。

final class クラス名 {
    実行処理...
}

クラスにfinal修飾子を使用する目的としては、そのクラスのメンバやメソッドの内容を不用意に変更されたくない場合に、親クラスの安全性を保つために使用します。クラスでfinal修飾子を使用する詳細については、以下の記事で詳しく解説しています!

【Java入門】final classの使い方
更新日 : 2019年10月14日

ラッパークラス

ラッパークラスとは、int型などの基本データ型に用意されているクラスです。基本データ型をクラスのように扱えて、インスタンス化することも可能です。

int型のラッパークラスはInteger、float型はFloatクラスになります。ラッパークラスは、以下のように定義します。

Integer i = new Integer(10);

ラッパークラスの詳細については、以下の記事で詳しく解説しています!

【Java入門】Integerとラッパークラスの基礎の基礎をわかりやすく解説!
更新日 : 2018年10月4日

抽象クラス

抽象クラスとは、実装を持たないシグネチャ(メソッド名、引数の型、引数の数)と戻り値の型のみを実装したメソッドを1つ以上保持するクラスを指します。

抽象クラスは「インスタンス化できない」「抽象メソッドをすべてオーバーライドする必要がある」などのルールがあります。そんな抽象クラスの詳しい使い方については、以下の記事で詳しく解説しています!

【納得Java】抽象クラス(abstract)を使うメリット
更新日 : 2019年4月8日

まとめ

ここでは、

  • クラスの基本的な使い方からクラスを継承する方法
  • 内部クラスの使い方
  • final修飾子の指定
  • ラッパークラス、抽象クラスの使い方

など、Javaにおけるさまざまなクラスの使い方について紹介しました。Javaを扱う上で、クラスは基本的な処理となりますので、ぜひ覚えておきましょう。もし、クラスの詳しい使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

侍テック編集部

侍テック編集部

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説