未分類

クラスの機能

投稿日:

      

まず、最初にクラスのフィールド、メソッドを取り上げていきます。

前の章で取り上げたコードです。フィールドに属性や体力量を代入しています。

実際にキャラクターの属性や体力量を設定する

かのような処理が行われているわけです。

ところが、これだけでは問題が起きてしまう場合があります。

  • char1.zokusei = ‘火’;
  • char1.tairyoku = -25;

このコードは何を意味しているのでしょうか?

キャラクターがさしている体力量を-25とする。

ということが行われているのです。

けれども、これはおかしな話です。本当のキャラクターでは「体力量をマイナスにする」ことはありません。

通常クラスを設計するときに、このような不具合が起こらないように、様々な仕組みを使っていきます。これから、その仕組みをひとつずつ見ていくことにしましょう。

privateメンバをつくる

体力がマイナスになってしまう誤りの原因はなぜなのでしょうか?

メンバを無制限に利用し、勝手な値(ここでは-25)を代入してしまったこと

にあるといえます。Javaではこのようなまちがいが起こらないように、

クラスの外から勝手にアクセスできないようなメンバにしておく

ことができます。このメンバのことを、privateメンバといいます。ではさっそく、キャラクターの属性や体力量をprivateメンバにしてみましょう。

publicメンバをつくる

フィールドをprivateメンバにすると、クラスの外からアクセスできなくなります。しかし、本当にmain()メソッド内でキャラクターの属性や体力量を設定できなくなるのでしょうか?

実は、アクセスする方法があります。下記のコードを入力してみてください。

キャラクタークラスの外から、属性や体力量を直接設定することは不可能です。しかし、setZokuTai()メソッドならば呼び出し可能です。

setZokuTai()メソッドには、publicという指定をつけています。publicをつけたメンバはクラスの外から利用可能です。

こうして、privateとpublicを使い分けることで、正しい属性や体力量を設定することができるのです。

カプセル化のしくみを知る

キャラクタークラス自身に体力量が正しいかどうかをチェックする機能を持たせました。うっかり間違った値が設定されないクラスを設計できます。

クラスの仕様部分(クラス宣言)とクラスを利用する部分(main()メソッドなど)を、異なる人が記述する場合があります。

クラスを設計する人がメンバを適切にprivateメンバとpublicメンバに分類しておけば、他の人がそのクラスを利用した場合に誤りの起きにくいプログラムを作成できるので、大変便利です。

このように、クラスの中にデータ(フィールド)と機能(メソッド)をひとまとめにし、保護したいメンバにprivateをつけて勝手にアクセスできなくする機能をカプセル化といいます。

  • フィールド    privateメンバ
  • メンバ      publicメンバ

と指定することがよく行われています。カプセル化は、クラスが持つ重要な機能のひとつです。

privateとpublicを省略すると?

privateとpublicは、修飾子と呼ばれています。修飾子は、省略することもできます。これまでのコードには、何の修飾子も付けていませんでした。

修飾子を省略したメンバは、「同じパッケージ」というものに含まれるクラス内からアクセスすることができます。

今までは、特に何も指定せずに、同じファイルに記述したクラスは、すべて「同じパッケージ」に含まれるクラスになります。なので、今まで無事にアクセスできたのです。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

サンプルイメージ

論理演算子

これまでいろいろな条件判断文を記述してきました。もっと複雑な条件を書ければ便利な場合があります。 スコアが「Sランク」であり、かつ、ゴールドがあったら・・・ →最強の装備にする このような複雑な条件を …

サンプルイメージ

for文のしくみを知る

激レアキャラをゲットするまでは・・・→レアガチャを引き続ける 私たちの生活に朝起きる、歯を磨く、朝食を食べる、学校に行く・・・といった「繰り返し処理」を行っています。 Javaでは、このような繰り返し …

Android 練習問題(タッチイベント)

     以下の様な動作をするアプリを作成してください。 問題2-1 TouchMove 初期表示時 画像上をタップすると画像が半透明で表示される。 画像上をタップしたまま指をスライドさせると画像が移 …

サンプルイメージ

継承

    継承のしくみを知る これまでは、「キャラクタ」の機能をまとめたクラスを使って、プログラムを作成してきました。この章では、さらに、新しいプログラムを作成していくことにしましょう。 5種類の格闘ゲ …

サンプルイメージ

配列のしくみ①

プログラムの中ではたくさんのデータを扱う場合があります。例えば、50体のキャラクターの攻撃力や体力や属性を扱うプログラムを考えてみましょう。 たくさんの変数が登場するので、コードが複雑で読みにくくなり …