前回はクラスに関連する単語について学びました。
今回は、
「classの機能」について書いていきたいと思います。
classの機能?
初学者の個人的な解釈ですが、
クラスの機能を使うことで、
「プログラムの設計」を行い、誤りが起こりづらいプログラムを作れるようになる。
と今の所考えています。
どんな機能がある?
クラスが持つ下記の機能について紹介していきます。
・カプセル化
・ポリフォーリズム
・クラス変数、クラスメソッド
元となるプログラムがこちらです。

今回はこのランニングプログラムを元に、説明を進めていきます。
見づらいですが、お許しください。
このプログラムを切り取りながら説明をしていきます。
カプセル化
カプセル化とは、
「クラスのフィールドとメソッドをひとまとめにして、アクセスを制限したいメンバに”private”というアクセス修飾子*をつけること」です。
”private”とはその名の通り、アクセスを制限する事でメンバにprivateと宣言する事で、
他のクラスからのアクセスが出来なくなります。
逆にアクセスを制限しない修飾子を”public”といいます。

メリットは、
他のクラスで起きた誤った処理から、親クラスのプログラムを守れると言うことです。
例えば、クラスの絶対的に変更したくない所にprivate、
どこからのクラスからもアクセスが出来る所にpublicと付けます。
他のクラスから来たアクセスはpublic*の部分でまず処理が行われ、
条件を満たしていればprivateのメンバの内容にアクセスするというプログラムを作れば間違えた値を入れたときに間違えの処理を行うことが可能となります。
*修飾子(modifier)とは…コードの性質を決めるJavaの予約語で、
いくつかの種類があります。
ここではアクセス修飾子という修飾子について触れています。
ポリモーフィズム(多様性)
ポリモーフィズムとは、多様化とも呼ばれ
「一つの名前のものが与えられた状況に応じて、様々な働きをする機能」になります。
どういうことかと言うと、
似たような複数の処理を同じ変数名で管理*を行い、()の中の引数の型や値を変更しておけば違うものとして扱われるようになります。
メリットとしてはコードがすっきりとまとまるようになるとのことです。

ものすごく便利ですね。
ポリフォーリズムもオブジェクト指向の重要な機能の一つになります。
*同じクラス内に同じ名前の複数のメソッドを定義することをオーバーロード(多重定義)といいます。
言葉として大切そうなので、これも覚えておきます。
ここで言葉の整理
同じ名前に複数のメソッドを定義(オーバーロード)
定義されたものが,状況に応じて様々な働きする(ポリモーフィズム)
クラス変数、クラスメソッド
クラス変数とは、
クラス全体で扱うデータを格納しておくフィールド
クラスメソッドとは、
オブジェクトとは関係なく呼びだすメソッド
共に共通していることは、「static」という修飾子が宣言時に使用されます。

私もまだ理解し切れていないのですが、
オブジェクト作成に関わらないクラスのフィールドとメンバというイメージを今の所持っています。
まとめ
だんだん学習内容が難しくなってきました。
単語の意味がわからないと今後内容についていけなくなるので、まずは言葉の整理を行い、実際のプログラミングを行いながらプログラムに慣れていきたいと思います。
駆け出しエンジニア けいこ♂
コメント