バナー画像

全く未経験の状態からJavaのプログラミング学習を始めた場合、最初の壁でもあり必ず理解しなければいけない概念として「オブジェクト指向」が挙げられます。

本記事では、Javaプログラミングを始めたばかりの方向けに、オブジェクト指向の基本についてサンプルコードを掲載しながらご紹介していきます。

Javaのオブジェクト指向とは


Javaは、オブジェクト指向のプログラミング言語であり、学習を始めるに辺りオブジェクト指向とは何なのかをまず理解することが大切です。

オブジェクト指向

オブジェクト指向というのは、プログラムで利用される機能をオブジェクト(物)として捉えて、各オブジェクトを組み合わせることによりシステムを完成させる概念です。

Javaに限らず、近年利用されるプログラミング言語の多くがオブジェクト指向を取り入れています。

オブジェクト指向のメリット

オブジェクト指向のメリットはたくさんありますが、代表的なものを一覧で確認してみましょう。

メリット一覧
  • 独立性
  • 再利用性
  • 拡張性

独立性

オブジェクト指向でプログラムを組むことで、処理をオブジェクト単位に独立させることが可能です。

独立させることにより、チームでの作業が分業しやすくなったり、プログラムのメンテンス性が向上します。

再利用性

オブジェクト単位にプログラムを分割しておくことで、他のシステム開発でも再利用することも可能です。

開発時間の短縮だけでなく、コピペでコードを乱立するよりも管理がしやすくなるため、可読性が高くなりプログラムの質が向上します。

拡張性

オブジェクト指向で独立性を高めることは、再利用しやすいだけでなくカスタマイズ性も高めることが可能です。

「継承」や「ポリモーフィズム」といった概念により、既に作成された処理をうまく活用しながら機能拡張することが出来ます。

オブジェクト指向に欠かせないクラスとインスタンスの関係


オブジェクト指向の説明では欠かせない「クラス」と「インスタンス」の関係についても確認していきましょう。

クラスとは

クラスは「設計図」に例えられることが多いのですが、フィールド(データ)やメソッド(処理)といったオブジェクトのテンプレートを定義することが出来ます。

クラスを元にオブジェクトを作成するため、クラスに定義されたフィールドやメソッドをオブジェクトで使用することになります。

インスタンスとは

インスタンスはクラスを実体化させたものを指します。

現実でも設計図だけでは実際に利用出来ないように、プログラムの世界でもインスタンス化してクラスに定義した機能を利用することになります。

Javaでオブジェクトの基本的な使い方


言葉だけでは伝わりにくい部分もあるので、実際にJavaのサンプルコードで具体的な処理を確認していきましょう。

クラス定義

まずはクラス定義の方法ですが、今回は「Human」クラスを作成してみたいと思います。

class Human {
	String name;
	int age;
	
	void speak(String word) {
		System.out.println(word);
	}
}

サンプルの場合、「Human」クラスに「name」と「age」のフィールド、「speak」というメソッドが定義されています。

インスタンス化

設計図であるクラスを定義出来たので、実際にオブジェクトとして利用するためにインスタンス化を実施していきます。

Human man = new Human();

インスタンス化するにはnew演算子を利用します。

サンプルの場合、Humanクラスをnew演算子でインスタンス化し、「man」という名前でインスタンスを作成しています。

インスタンスにアクセスする

作成したインスタンスのフィールドを使用するには「インスタンス名.フィールド名」、メソッドは「インスタンス名.メソッド名」で利用することが可能です。

Human man = new Human();
man.speak(man.name);

サンプルではHumanクラスを利用して、speakメソッドでnameフィールドの値を出力するような記述となります。

サンプルで動作確認

これらの基本を抑えた上で実際にプログラムにすると下記のようなソースコードとなります。

public class Main {

	public static void main(String[] args) {
		Human man = new Human();
		man.name = "山田 太郎";
		man.speak(man.name);
	}
}

class Human {
	String name;
	int age;
	
	void speak(String word) {
		System.out.println(word);
	}
}

実行結果が下記です。

山田 太郎

Mainクラスのmainメソッドは、Javaで一般的に利用されるプログラムのスタート地点となるメソッドです。

mainメソッドからHumanクラスをインスタンス化し、フィールドに名前を設定した上で、speakメソッドを使用してコンソールに名前を出力しています。

Javaのオブジェクト指向で覚えておきたい用語


ここまでで、Javaのオブジェクト指向に関する基本的な部分についてはご紹介出来ましたが、実際にはまだまだ覚えるべきことはたくさんあります。

予備知識として、2つ抑えておきたい用語を簡単にご紹介していきます。

ポテパンダの一言メモ

ここでご紹介する用語をいきなり全て覚える必要はありません。
まずは上述した基本中の基本を抑えた上で、徐々に各用語を理解していきましょう。

コンストラクタ

コンストラクタは、クラスをインスタンス化する際に呼び出されるクラスと同名のメソッドです。

自分で定義していなくても、自動で実行されています。

ちなみに先程のHumanクラスに自分でコンストラクタを記述した場合、自動で実行されているコンストラクタは下記と同様です。

class Human {
	String name;
	int age;
	
	void speak(String word) {
		System.out.println(word);
	}
	
	Human() {
		// コンストラクタ
	}
}

インスタンス化する際に呼び出されるコンストラクタは処理を指定しない場合何も実施されませんが、初期化処理などを記述しておくことで任意の初期値を設定するなどの使い方が可能です。

継承

継承は別々のクラスに親と子の関係を持たせる機能で、親クラスのフィールドやメソッドを子クラスに引き継ぐことが可能です。

継承を利用するには「extends」を記述します。

class Japanese extends Human {
	void kanji(String str) {
		// 漢字変換処理
		System.out.println(str + "を漢字に変換しました。");
	}
}

サンプルの場合、Humanクラスを継承したJapaneseクラスが作成されます。

Japaneseクラスのインスタンスを作成した場合、Humanクラスに定義されたフィールやメソッドに加えて、kanjiメソッドを追加で利用出来るようになります。

一方で、Humanクラスのインスタンスではkanjiメソッドを呼び出すことは出来ません。

さいごに: Javaでの開発にはオブジェクト指向の理解が必須


本記事では、Javaのオブジェクト指向に関する基本的な情報についてご紹介してきました。

Javaでの開発に取り組む上でオブジェクト指向の理解は必須です。

まずはクラスとインスタンスといったオブジェクト指向開発の基本を抑えた上で、徐々に知識を増やしながらJavaでのシステム開発にチャレンジしてみましょう。

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

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

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

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

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

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

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

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

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

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

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