バナー画像

Javaでの学習を進めていると、「フィールド」といった用語を頻繁に見かけるのではないでしょうか。

本記事では、Javaにおける「フィールド」の意味合いや使い方について、初心者が混乱しやすい「クラス」や「メソッド」との違いを交えながら解説していきます。

Javaのフィールドとは


Javaでは、「フィールド」という用語が利用されますが、これはクラス内で値(情報)を保持するために使用するものを指しています。

クラスとの違い

クラスはよく設計図に例えられますが、Javaのようなオブジェクト指向のプログラミング言語で、意味のあるまとまりとして「処理」や「情報」を集めたものです。

フィールドはこの「情報」の部分を表しています。

メソッドとの違い

メソッドは、上述したクラス内で「処理」を表す用語です。

「情報」を表すフィールドと「処理」を表すメソッドによって、クラスが構成されています。

Javaでフィールドを記述する方法


では実際にJavaでフィールドを利用するには、どのように記述していくのかを確認していきます。

記述法

Javaでフィールドを定義するには下記の構成で記述されます。

class クラス名 {
  [アクセス修飾子] データ型 フィールド名1;
  [アクセス修飾子] データ型 フィールド名2;

  // メソッド
}

クラス内に、フィールド名とデータ型をセットで記述し、どのような情報を扱うのか定義します。

一般的には、フィールドをクラス内の上部に記述し、メソッドを下部に記述します。

アクセス修飾子

Javaのアクセス修飾子は、クラスやフィールド・メソッドのアクセス範囲を指定するもので、4つの指定方法が提供されています。

アクセス修飾子
  • public: どのクラスからもアクセス可能
  • protect: 同一パッケージ内またはサブクラスからのみアクセス可能
  • private: 同じクラスからのみアクセス可能
  • 指定なし: 同じパッケージのクラスからアクセス可能

サンプルコードでJavaのフィールドを理解しよう


ここからはサンプルコードで、Javaのフィールドを具体例を交えながらご紹介していきます。
Javaの高単価フリーランス案件はこちら

サンプル1

1つ目のサンプルでは、同じクラス内で定義したフィールド値を、同じクラスのメソッドから変更してみます。

実装

public class Main {
	
	int number1;
	int number2;
	
	public static void main(String[] args) {
		Main m = new Main();
		
		System.out.println("number1の値: " + m.number1);
		System.out.println("number2の値: " + m.number2);
		
		m.change(5, 3);
		
		System.out.println("number1の値: " + m.number1);
		System.out.println("number2の値: " + m.number2);		
		
	}
	
	private void change(int num1, int num2) {
		this.number1 = num1;
		this.number2 = num2;
	}
}

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

number1の値: 0
number2の値: 0
number1の値: 5
number2の値: 3

解説

サンプルでフィールドを定義しているのは3行目と4行目で、int型の「number1」と「number2」を定義しました。

アクセス修飾子を指定していないので、同じパッケージ内のクラスであれば利用出来ることになります。

6行目の「static void main」は、Javaプログラムを実行させる際、標準で呼び出される最初のメソッドです。

static付きのメソッドからは、「this.フィールド名」形式での呼び出しが出来ないため、一度7行目のMainクラスをインスタンスして利用しています。

実際に値を変更しているのは、19~22行目のchangeメソッドですが、変更された値が保持され14・15行目のmainメソッド内の処理にも反映されていることが確認出来ます。

サンプル2

サンプルの2つ目では、アクセス修飾子を指定することでの違いについて確認してみたいと思います。

実装

public class Main {
	
	public String strPublic = "public";
	protected String strProtect = "protected";
	private String strPrivate = "private";
	
	public static void main(String[] args) {
		Main m = new Main();
		Sub s = new Sub();
		Other o = new Other();
		m.execute();
		s.subExecute();
		o.otherExecute();
	}
	
	public void execute() {
		System.out.println("同一クラス内のexecuteメソッドから実行");
		System.out.println(this.strPublic);
		System.out.println(this.strProtect);
		System.out.println(this.strPrivate);
	}
	
}

class Sub extends Main {
	
	public void subExecute() {
		System.out.println("サブクラス内のexecuteメソッドから実行");
		Main m = new Main();
		System.out.println(m.strPublic);
		System.out.println(m.strProtect);
		// System.out.println(m.strPrivate); アクセス修飾子の範囲外
	}
}

class Other {
	public void otherExecute() {
		System.out.println("同一パッケージ内のexecuteメソッドから実行");
		Main m = new Main();
		System.out.println(m.strPublic);
		System.out.println(m.strProtect);
		// System.out.println(m.strPrivate); アクセス修飾子の範囲外
	}
}

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

同一クラス内のexecuteメソッドから実行
public
protected
private
サブクラス内のexecuteメソッドから実行
public
protected
同一パッケージ内のexecuteメソッドから実行
public
protected

解説

2つ目のサンプルでは、3~5行目のフィールドを異なるアクセス修飾子で設定しました。

16~21行目のexecuteメソッドは同一クラス内であるため、全てのフィールドにアクセス出来ています。

27~33行目のsubExecuteメソッドでは、サブクラスからのアクセスとなっているため、private修飾子のフィールドにはアクセス出来ません。

37~43行目のotherExecuteメソッドは、同一パッケージ内のクラスであるため、publicとprivate修飾子のフィールドにアクセス出来ています。

ポテパンダの一言メモ

otherExecuteメソッドに関しては、異なるパッケージに定義している場合、protected修飾子にもアクセス出来ないので意識しておきましょう。

さいごに: Javaでフィールドを利用する場合はアクセス修飾子の違いを意識しよう


本記事では、Javaでのプログラミングにおける必須知識「フィールド」について、基本となる概要と実際の使い方についてご紹介してきました。

フィールドは情報を保持するために利用するためのものですが、アクセス範囲は修飾子により異なります。

オブジェクト指向の基本的な考えとして、必要なアクセス範囲に設定することが大切ですので、適切なアクセス修飾子を選択出来るようフィールド定義を検討してみてください。

Javaのフリーランス案件を覗いてみよう

Javaのフリーランス案件は豊富にあり、条件も高いものが多いです。Javaの実務経験が2年以上あればフリーランスになるのも可能です。経験が5年程あれば月単価70万円以上も可能です。Java案件のトレンドが気になる方は、Java案件の単価相場や募集トレンド
をご覧ください。

当メディアを運営するポテパンでJavaフリーランス案件のご紹介もやっておりますので、最新Java案件一覧も是非ご覧ください。

もし、RubyなどのWebエンジニアへの転職を考えている方は、転職に強いポテパンキャンプをご利用くださいませ。

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

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

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

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

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

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

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

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

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

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

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