スポンサーリンク
スポンサーリンク

Javaを挫折した時にみてください

今この記事をご覧になっているあなたは、Javaで挫折したと感じていることでしょう。

実は私もJavaで挫折した経験があるんです。

でも今現在はマスターしており、こうしてJavaに関する記事をたくさん書いています。

そこで、僕がJavaを挫折したポイントや、克服したポイントを紹介することで、今この記事をご覧になっているあなたにとってJava克服のヒントになればと思います。

挫折の始まり

挫折ポイント1 インスタンス

このJavaのインスタンスを理解のがどうしてもできなくて、どうにも苦労しました。

「static」って何? 「new」って何?

どうしてもこの疑問が解決できませんでした。

とりあえずインスタンス化はしてるけど、実はよくわかっておらず、毎回原因不明のエラーに泣かされました。

挫折ポイント2 インターフェース

「import」文を書かないとエラーが消えない。

でも、「import」文に書かれている内容がどういう意味をもっているのかがわからない。

ここでさらに挫折しました。

挫折ポイント3 実装クラス

最後に「実装クラス」です。

これはいわゆる「implements」文です。

この「implements」文のあとには、インターフェースと呼ばれるクラスを記述するのですが、このインターフェースもよくわからず挫折しました。

Javaを克服したポイント

そんな挫折の道を辿ってきた僕がJavaを克服できたわけは、「クラス」というものを理解できたことにあります。

Javaはクラスを理解するべし

Javaを理解するには、この「クラス」を理解することが最重要となります。

「クラス」を理解することで、オブジェクト指向も理解することができます。

すべてはこの「クラス」にあると言ってもいいでしょう。

クラスは部品の設計図

もっというと、クラスは部品の設計図で、インスタンスは設計図を基に作られた部品です。

例えば以下のようなプログラム

「Car」というクラスを作り、車の発車・停止を行う2つの関数を作りました。

これが「Car」という部品の設計図になります。

どういうことかというと、例えば以下のプログラム

実はこのプログラムだと、「13」行目でエラーになってしまいます。

なぜかというと、クラスはあくまでも設計図なので、設計図を発車させることはできませんよね。

そこでインスタンスが必要になるんです。

先ほどインスタンスは設計図を基に作られた部品と言いました。

そうです。インスタンス化を行うことで車という部品を作ることができるんです。

それが以下のプログラムになります。

こうすれば、設計図を基に作られた車を発車することになるので、エラーになりません。

つまり、設計図の段階では車は実体化されていない、つまり構想段階ですが、これをインスタンス化することで車という実体のあるものにする。

それがインスタンス化です。ちなみに「instance」という単語自体、「実体」という意味を持っています。

これでクラスとインスタンスは理解できたでしょうか。

スタティックはすでに作られた部品

ではスタティックとはなんでしょうか。

タイトルにも書いてある通り、スタティックはすでに作られた部品ということになります。

例えば以下のプログラム

「Car」が一体なんの設計図かを教える際に、「name」というスタティックな関数を用いました。

スタティックで宣言すると、「name」という関数はすでに作られたものになるので、インスタンスから呼ぶ必要がありません。

もちろんインスタンスから呼ぶことも可能です。

 

では、どういう状況でスタティックを使用するのでしょうか。

スタティックはすでに作られたものと言いました。つまり、単体で使用されてもいいものということになります。

つまり、人種の名前やキーコード、国の名前など、汎用的なものを表す際に使われることになります。

抽象クラスは抽象的な設計図

抽象クラスは抽象的な設計図という、そのまんまのタイトルではありますが、これが真意なんです。

例えば、ベンツとポルシェの設計図を書くとします。

ベンツもポルシェも、どちらも「車」であるため、必ず発車・停止のプログラムは必要になります。

そこで抽象クラスです。

例えば以下のプログラム

「Car」クラスを「abstract」を使って抽象クラスとして宣言しました。

そして「Benz」クラスは「Car」クラスを継承します。

抽象クラス内に宣言された「abstract」関数は、継承した「Benz」クラス内で必ずオーバーライドしなくてはなりません。

実はここが重要で、個人開発だとあまり恩恵を感じづらいのですが、複数人で開発する際では威力を発揮することになります。

というのも、複数人で開発する際にもし抽象クラスを使わないような設計を行っていたとすると、「車」で絶対に必要となる処理の記述で不備が出てしまう可能性が出てきてしまいます。

発車・停止の処理が必ず必要なのはわかりきってはいますが、より複雑なプログラムになってくるとすべてを把握することが難しくなるので、抽象クラスを使うことでその問題を解決します。

インターフェースは部品に機能を追加する

次にインターフェースです。

タイトルは「インターフェースは部品に機能を追加する」ですが、プログラムを見た方が理解が早いと思うので、以下のプログラムをご覧ください。

このように、ベンツに「空を飛ぶ機能」と「ワープする機能」を追加しました。

このように、インターフェースを使うことで、ある部品に自由に追加の機能を実装することが可能になります。

また、実装する内容もクラスによって違ったものにすることが可能なので、例えばポルシェの「ワープ機能」は3回しか使えないようにしたり、「空を飛ぶ機能」をベンツより性能を低くすることもできます。

Javaはクラスの集合体

最後に、Javaはクラスの集合体であることを理解します。

Javaでは数えきれないくらいのクラスが標準で装備されており、こういったクラスを駆使することで様々なアプリケーションを形作っていきます。

しかし、クラスは「ただ」あるのではなく、役割によって分類がなされています。

そのため、標準ライブラリのプロジェクトは無数のフォルダによって分類・管理されています。

具体的には、「java」というフォルダの中に様々なフォルダが存在することになります。

「import」文で

こういった記述をすると思いますが、実はこれはクラスファイルのパスを示しています。

こういったように、Javaに存在する無数のクラスは管理されており、標準ライブラリが形作られています。

これがJavaです。

あとがき

いかがでしょうか。

少しでもJava克服のヒントになってくれたら嬉しいです。

Javaプログラマは現在もこれからも必要となってくる人材ですので、是非くじけずにJavaマスターを目指していってください!

オススメJava記事

404 NOT FOUND
Javaのクラスとインスタンスが絶対にわかる3つのポイント
【保守性とは】Javaで「private」を使うメリット

コメント