バナー画像

何度も使いまわすようなスクリプトは、クラス化することにより簡単に呼び出すことが出来ます。

今回はこのクラス化について学習してみましょう。

カプセル化とは

カプセル化とはブロックで囲むことだと覚えてください。

ブロックとは{}であり、このブロックで囲まれた内部の変数やメソッドは決められた一定の範囲で使いまわすことが出来ます。

ブロックで囲む事自体はJavaでは当たり前の作業ですが、単純にブロックで囲んだだけではカプセル化とは言えません。

カプセル化とはあくまでも使いまわしの出来るように成形されたクラス群だと思ってください。

またカプセル化をマスターすることでプログラムを再編する場合にも非常に管理しやすくなります。

クラスの書き方

Javaにおけるクラスとはプログラムをまとめたインスタンスを指します。

このクラスの中でメンバ変数を定義したり処理を実行させるメソッドを定義し、これらをいくつも組み合わせることでプログラムを実行させるというのが一般的な使い方です。

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

class クラス名 {
	メンバ変数・・・
	メソッド・・・
}
ポテパンダの一言メモ

メンバ変数とはクラス内で使用する変数のことです。
メンバ変数を定義する場合には、必ずメソッドの外に記述するというルールがあります。

クラスの呼び出し

基本となる呼び出し方

クラスを呼び出すためには、呼び出すクラスのインスタンスを生成する必要が有ります。

インスタンスを生成することで、そのクラス内に記述されたメンバ変数やメソッドを呼び出すことが出来るようになります。

それでは実際にコードを見てみましょう。

// Main.java
public class Main {

	public static void main(String[] args) {
		
		//クラスのインスタンスを生成
		SampleClass sample = new SampleClass();
		
		//SampleClass内メソッド「SampleMethod」の呼び出し
		sample.SampleMethod();
		
	}

}

// SampleClass.java
class SampleClass {

	// メンバ変数
	private int myAge = 30;
	
	// メソッド
	public void SampleMethod(){

		System.out.println("年齢:" + myAge + "歳");

	}

}

実行結果

年齢:30歳

上のコードでは外部ファイルのSampleClass.javaに記述してあるSampleClassをMain.javaでインスタンス化し、クラス内メソッドである”SampleMethod”を呼び出しています。

staticを使った呼び出し方

上記の一般的な呼び出し方では、クラスを呼び出す際にはインスタンスを生成すると説明しました。

しかしstatic修飾子を使うことでインスタンスを生成することなくメンバ変数やメソッドの呼び出しが出来るようになります。

staticクラスを用いたコードを見てみましょう。

//Main.java
public class Main {

	public static void main(String[] args) {
		
		//SampleClass内メソッド「SampleMethod」を呼び出し
		SampleClass.SampleMethod();
		
	}

}

// SampleClass.java
class SampleClass {

	// メンバ変数
	private static int myAge = 30;
	
	// メソッド
	public static void SampleMethod(){

		System.out.println("年齢:" + myAge + "歳");

	}

}

実行結果

年齢:30歳

Main.javaでインスタンス化していた部分を削除し、スッキリとしたコードになっています。

ポテパンダの一言メモ

staticを使ったコードの中で、メンバ変数にもstaticがついていることに気づきましたか?
static修飾子を使用したメソッドを利用する場合には、その中で使われる変数にもstaticを割り当てる必要が有りますので忘れないようにしましょう。

インナークラス

内部クラスと呼ばれるもので、簡単に言うとクラスの中でネストされたクラスを指します。

別段変わったことはありませんが、注意点としてはstaticを使用したインナークラスからは非staticな外部クラスにアクセス出来ません。もっとわかりやすく言い換えるなら実質的に通常クラスと同等の扱いということになります。

結果として内部クラスを使うメリットがまるでなくなってしまいますので、staticを使うことは極力避けましょう。

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

クラスの継承

クラスの継承をすることで、継承元クラス内で定義しているメンバをそのまま他のクラスで使えるようになります。

継承元クラスは「スーパークラス」「親クラス」などと呼ばれ、逆に継承先クラスは「サブクラス」「子クラス」と呼ばれます。

継承する場合には”extends”で継承元を指定して使用します。

class 親クラス名 {
    実行処理...
}
 
class 子クラス名 extends 親クラス名 {
    実行処理...
}
ポテパンダの一言メモ

メンバとは?
メンバとは、クラスで宣言されたフィールドとメソッドを指します。
コンストラクタもメソッドと似たような作りですがこちらはメンバには含まれません。

final修飾子

クラスに”final”修飾子を使用すると、そのクラスは継承不可となります。

final修飾子はスーパークラスのフィールドやメソッドを変更されたくない場合に用いることで安全性を高める効果があります。

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

抽象クラス

“abstract”修飾子がつくクラスを抽象クラスと呼びます。抽象クラスには一つ以上の中小メソッドを保持させる必要が有ります。

抽象クラスを使う利点は、オーバーライドを強制させることが出来る点です。抽象クラスを継承した子クラスは抽象メソッドをオーバーライドした上で処理させる内容を記述しなければなりません。

抽象クラスのコード記述については以下の通りとなります。

abstract class クラス名 {
    abstract 戻り値の型名 メソッド名(引数);
}

また抽象クラスは”extends”で継承させる必要が有る為、実際のコードは以下のように記述します。

public class Main extends AbstractClass {

	public static void main(String[] args) {
		Main main = new Main();
		main.abstractMethod(1, "A");
	}
	
	public void abstractMethod(int num, String str) {
		System.out.println("引数int num = " + num + " / 引数String str = "+ str);
	}

}

コンストラクタ

抽象クラスのコンストラクタは子クラスで”super”を使って継承する必要があります。

抽象クラスは直接インスタンス化することはできませんが子クラスはインスタンス化出来るため、この法則を使って子クラスをインスタンス化し抽象クラスのコンストラクタを利用しましょう。

abstract class AbstractClass {

    // 抽象クラスのコンストラクタ
    public AbstractClass(int num, String str) {
        System.out.println("引数int num = " + num + " / 引数String str = "+ str);
    }
    
    abstract void abstractMethod(int num, String str);
    
}
 
class SubClass extends AbstractClass {
    // 子クラスのコンストラクタから抽象クラスのコンストラクタを呼び出し
    public SubClass(int num, String str) {
        super(num, str);
    }
    
    public void abstractMethod(int num, String str) {
        System.out.println("引数int num = " + num + " / 引数String str = "+ str);
    }
}
 
public class Main {
 
    public static void main(String[] args) {
        SubClass sc = new SubClass(1, "A");
    }
    
}

まとめ

いかがでしたか?今回はClassについて具体的に解説しました。

クラスは大規模開発に限らず、Javaを扱うためには必ず必要となってくる基本的な部分でもありますので必ずマスターするようにしましょう

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。