こんにちは、ぐっさんです。
Java課題を振り返っていきます。
私が初めて学習したプログラミング言語はC言語だったのですが、オブジェクト指向ではなかったので、Javaの学習を始めて混乱し始めたのがこのあたりからです( ;∀;)
理解するのにかなり苦労しました・・・
アクセス修飾子でフィールドの公開・非公開を指定し、非公開の場合はゲッターで値を取得したり、セッターで格納して良いものか検査を行いながら値を格納する。
課題は、複数のクラスが存在しフィールドやメソッドにアクセスしているので、混乱しないように1つの処理で区切りながらコーディングするように意識しました。
【課題の内容】
・Mainクラスのmainメソッド
1.冒険者クラス をインスタンス化する
2.キーボードから数値を入力しその値のダメージを冒険者に与える
3.宿クラスをインスタンス化する
4.キーボードから値を入力し宿泊コースを選択する
5.それぞれのメソッドに引数を渡しながら呼び出す。
・冒険者クラス
名前フィールド、HPフィールド、最大HPフィールドは非公開
HP表示メソッド、ダメージメソッド、回復メソッドは公開
・宿クラス
宿泊メソッドは公開
●実行内容●
冒険者の小島のHP:30
冒険者にダメージを与える
ダメージ量:17
冒険者の小島のHP:13
宿泊コースの一覧から番号を選択
1.少し休息コース
2.じっくり休息コース
3.がっつり休息コース
コース番号:2
冒険者の小島は 10 回復した
冒険者の小島のHP:23
extendsを使用し親クラスの機能を引き継いで子クラスを生成する。
この時にprivate修飾子のものは引き継がれず、is-aの関係や親と子のコンストラクタを意識しながら生成を行う。
継承の課題で書いたコードが下記になります。
//キャラクタークラス class Caracter{ protected String type; protected String name; Caracter(String type, String name){ this.type = type; this.name = name; } public void attack(){ System.out.println(this.type + "の" + this.name + "が攻撃した"); } } //キャラクタークラスを継承したヒーロークラス class Hero extends Caracter{ Hero(String type, String name){ super(type, name); } } //キャラクタークラスを継承したゴブリンクラス class Goblin extends Caracter{ Goblin(String type, String name){ super(type, name); } }
共通するフィールドやメソッドを持つクラスを生成するとき、共通する部分を持った抽象クラス・インターフェイスを利用して、継承・実装しオーバーライドしてそれぞれの処理をさせることが出来る。
親クラスの型で子クラスを扱うなどがあるんですが、初めは「どういう事?」となって一番躓きました( ;∀;)
私は研修課題や個人で持っている書籍の問題を解いていき徐々にイメージすることが出来ました。
今回の内容は今までの内容と違って複雑になってきたので、個人的にも復習や参考書の問題を積極的に解きながらしっかり理解しておきたいと思います。
以上、ぐっさんでした。