プログラミング

【Java初心者向け】クラスについて抑えよう!トップクラスから匿名クラスまで

プログラミング
この記事は約5分で読めます。
Sponsored Links

クラスとは

教室, 貴陽市, 表, 教科書, デスク, 表彰台に上, 学生, 学生の, ユニフォーム, 本

Javaに触れ始めるとクラスという言葉をよく耳にします。「クラス??」と思う人もいるかと思いますが、クラス=プログラム処理時に必要な処理をまとめた設計図というふうに認識しておきましょう。

Javaではオブジェクト指向という言葉がよく出てきます。これは1つのプログラムを機能単位に区切って作成し、できるだけ他の部分への影響が出ないようにしましょう。という考え方です。この考え方をもとにクラスというものが作成されました。

クラス単位で処理を作成し、それを活用していくことで影響の少ないコードを書くことができます。

クラスの定義

そろばん, 微積分, 教室, カウント, カウンタ, 子供, 数学, 数学の
アクセス修飾子 class クラス名 {

     // フィールド、コンストラクタ、メソッドを書く

}

次に実際にクラスを定義する方法を学習していきましょう。クラスの中には記述できるものは①フィールド ②メソッド ③コンストラクタ の3つです。インポート文やパッケージ名は記述できないので注意しましょう。

クラスの種類

Woodtype, 印刷, フォント, 活版印刷, ウッド ブロック, 木材の種類, タイプ, ビンテージ

クラスにもたくさんの種類があります。①トップクラス ②ネストクラス ③内部クラス ④ローカルクラス ⑤匿名クラスの5つです。次にこれらのクラスに関して学習していきましょう。

トップクラス

public class Sample {

	//処理内容を記述

}

トップクラスとは、ファイルに定義した一番大きなクラスのことを指します。トップクラスはクラス名とjavaのファイル名が一致している必要があります。クラスと言われたらまずこのトップクラスを指すことが多いです。

ネストクラス

public class Sample {
	public static class SampleNested {
		
           //処理内容を記述

	}
}

ネストクラスとはトップクラスの直下につくクラスで、staticの記述を必須とします。コード的には以下のようになります。staticを記述しているため、外部から直接呼び出すことが可能であり、トップレベルクラスと同等の機能性を持っています。インポート分を使うことで、SampleNestedを直接呼び出すことも可能です。

内部クラス

public class Sample {
   
	public class SampleNested {
		
           //処理内容を記述

	}
}

public class Main {
  
  //トップクラスのインスタンス生成
  Sample sample = new Sample();

 //内部クラスのインスタンス生成
  SampleNested sampleNested = sample.new SampleNested();

}

内部クラスはクラスの中にあるクラスのことを指します。ネストクラスとは違い、staticを記述しない点が特徴です。別のクラスから呼び出す際には上記のように記述します。インスタンスを経由してさらにインスタンス生成をする点が特徴です。

ローカルクラス

public class Sample {
     
 //コンストラクタ 
 public SampleNested() {
  //ローカルクラス
  class sample{
   //処理内容を記述
   }
 }

 //クラスメソッド
 public static void sampleMethod() {
  //ローカルクラス
  class sample{
   //処理内容を記述
  }
 }
}

ローカルクラスはクラスメソッドやコンストラクタの中に記述したクラスのことを指します。アクセス修飾子はつけることができないという特徴があります。実際にローカルクラスが使われることは少ないですが、知識として覚えておきましょう。

匿名クラス

class Main {
   new  クラス名/インターフェース名( ) {
    メソッドの処理を記述
  }.メソッド();
}

最後に学習するのは匿名クラスです。匿名クラスは他のクラスに比べて少し特性が違います。理解するのも少し難しいので詳しく説明していきましょう。匿名クラスはnewクラスの定義を並行して行います。通常のクラスではクラスを生成して、他のクラスでインスタンスとして呼び出し、その中のメソッドを実行するというのが普通ですが、匿名クラスの場合はクラス・メソッドの宣言と利用を一気に行います。匿名クラスはその場限りでしか使わないクラスを定義したい時に利用することが多いです。変数に代入する際や、引数として利用します。

interface Score {
 int printScore();
}

-------------------------------------------

public class Main {
  public static void main(String[] args) {
   //匿名クラスを実装し変数に代入
    int t =  new Score() {
         @Override
         public int methodA() {
           return 10;
         }
     }.printScore();
  }
}

実際に利用する場合は上記のように利用します。匿名クラス定義後にメソッドを呼び出さないと、オーバーライドしたメソッドが呼び出されないので、きちんとメソッドの呼び出しをするようにしましょう。このように匿名クラスはその場でクラスの中の処理内容を定義し、利用したい場合に使用します。

最後に

クラスはJavaを学習する上で、要となる要素でありその奥は非常に深いです。ここでは詳しく出てきませんでしたが、継承、インスタンス化、インターフェースなど様々な用語がクラスには絡み合ってきます。一度に理解しようとすると非常に難しいので「まだJavaを勉強し始めだよ!」という人は用語があるという認識を持って勉強を進めていくと良いでしょう。

タイトルとURLをコピーしました