全く未経験の状態からJavaのプログラミング学習を始めた場合、最初の壁でもあり必ず理解しなければいけない概念として「オブジェクト指向」が挙げられます。
本記事では、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でのシステム開発にチャレンジしてみましょう。
Javaのフリーランス案件を覗いてみよう
Javaのフリーランス案件は豊富にあり、条件も高いものが多いです。Javaの実務経験が2年以上あればフリーランスになるのも可能です。経験が5年程あれば月単価70万円以上も可能です。Java案件のトレンドが気になる方は、Java案件の単価相場や募集トレンド
をご覧ください。
当メディアを運営するポテパンでJavaフリーランス案件のご紹介もやっておりますので、最新Java案件一覧も是非ご覧ください。
もし、RubyなどのWebエンジニアへの転職を考えている方は、転職に強いポテパンキャンプをご利用くださいませ。
ここでご紹介する用語をいきなり全て覚える必要はありません。
まずは上述した基本中の基本を抑えた上で、徐々に各用語を理解していきましょう。