Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Java開発では、小規模なシステム開発でも1つのクラスで完結することはほとんどなく、様々なクラスを連携させてシステムを構築していきます。

本記事では、複数クラスを連携させる際の呼び出し方法について、色々なパターンで確認していきたいと思います。

Javaで別クラスのpublicメソッドを呼び出す方法


publicメソッドは、自由に外部クラスから呼び出すことが可能です。

同一クラスファイルから呼び出す

まずは簡単に同一クラスファイルに定義されたクラスを呼び出すサンプルを確認してみましょう。

Main.java

package sample;

public class Main {
	 
	public static void main(String[] args) {
			Sub sub = new Sub();
			sub.publicMethod();
	}
}
 
class Sub {	
	public void publicMethod() {
		System.out.println("publicMethodから出力しています。");
	}
}

実行した結果が下記です。

publicMethodから出力しています。

6行目のようにインスタンス化を実施する必要はありますが、外部クラスからpublicメソッドを呼び出すことが可能です。

別階層のクラスファイルから呼び出す

今度は別ファイルに記述されたクラスの処理を呼びだすサンプルコードで確認してみます。

Main.java

package sample;

import sample.subDir.Sub;

public class Main {
	 
	public static void main(String[] args) {
			Sub sub = new Sub();
			sub.publicMethod();
	}
}

Sub.java

package sample.subDir;

public class Sub {
	public void publicMethod() {
		System.out.println("publicMethodから出力しています。");
	}
}

実行結果が下記です。

publicMethodから出力しています。

3行目のimport文で、クラスファイルが格納されているsubDirフォルダを参照するように設定します。

import文の設定を実施しないと下記のようなエラーが発生するため注意が必要です。

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Sub を型に解決できません

Javaで別クラスのstaticメソッドを呼び出す方法


今度は別クラスで定義されたstaticメソッド(クラスメソッド)を呼び出す方法を確認してみましょう。

staticメソッドの呼び出し

staticで定義されたメソッドは、呼び出し元でインスタンス化を実施する必要がありません。

Main.java

package sample;

public class Main {
	 
	public static void main(String[] args) {
			Sub.staticMethod();
	}
}
 
class Sub {
	public static void staticMethod() {
		System.out.println("staticMethodから出力しています。");
	}
}

実行結果が下記です。

staticMethodから出力しています。

6行目でインスタンス化をせず、直接別クラスのメソッドを呼び出していますが、staticメソッドの場合には実行出来ていることがご確認頂けます。

インスタンスメソッドの呼び出し方法でも実行は可能

基本的には上述した方法でクラスメソッドの呼び出しを行いますが、実はインスタンスメソッドと同じ方法でもクラスメソッドは実行することが可能です。

package sample;

public class Main {
	 
	public static void main(String[] args) {
		Sub sub = new Sub();
		sub.staticMethod();
	}
}
 
class Sub {
	public static void staticMethod() {
		System.out.println("staticMethodから出力しています。");
	}
}

実行結果が下記です。

staticMethodから出力しています。
ポテパンダの一言メモ

EclipseなどのIDEでも注意喚起がされるため、推奨される方法ではありません。

Javaで別クラスのprotectedメソッドを呼び出す方法


アクセス修飾子protectedが設定されたメソッドを呼び出す方法についても合わせて確認しておきましょう。

同一ディレクトリ内

同一ディレクトリ内の場合、特に指定なくpublicメソッドのようにアクセスすることが可能です。

Main.java

package sample;

public class Main {
	 
	public static void main(String[] args) {
		Sub sub = new Sub();
		sub.protectedMethod();
	}
}
 
class Sub {
	protected void protectedMethod() {
		System.out.println("protectedMethodから出力しています。");
	}
}

実行結果が下記です。

protectedMethodから出力しています。

異なるディレクトリ

異なるディレクトリに格納されたクラスのメソッドを呼び出す場合、newで明示的に生成した継承先クラスのインスタンスからメソッドを呼び出す必要があります。

Main.java

package sample;

import sample.subDir.Sub;

public class Main extends Sub {
	 
	public static void main(String[] args) {
		Main main = new Main();
		main.execute();
	}
	
	private void execute() {
		this.protectedMethod();
	}
}

Sub.java

package sample.subDir;

public class Sub {
	protected void protectedMethod() {
		System.out.println("protectedMethodから出力しています。");
	}
}

実行結果が下記です。

protectedMethodから出力しています。

同一パッケージ内の異なるディレクトリに格納されているだけなので、import文だけで実行出来そうですが、実際にはMain.javaファイルの8行目に記述したように、明示的なインスタンス化が必要となるため注意しておきましょう。

さいごに: Javaで別クラスの処理を呼び出す各種方法を把握しよう


本記事では、Javaで別クラスの処理を呼び出す方法をいくつかのパターンに分けてご紹介してきました。

アクセス修飾子やクラスメソッドとしてなど、定義方法により呼び出し元からのアクセス方法も変わってきます。

まずは利用される機会の多いpublicメソッドの呼び出し方法から、少しずつ他の方法も理解出来るよう学習を進めていきましょう。

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

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

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

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

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

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

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

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

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

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

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