2015-06-01から1ヶ月間の記事一覧
〈インターフェース〉 継承されたクラスは元をたどっていくとどんどん抽象的になっていく ex. Goblinクラス int hp; attack( ){ 中身確定}; int mp; run( ){中身確定}; ↓ (抽象メソッドが増える) WalkMonsterクラス int hp; abstract attack( ); 中身は未定 …
〈高度な継承〉 まず前提として 親クラス…曖昧なクラス 子クラス…具体的なクラス これまでの継承 目の前のプログラム開発に必要なクラスを作る開発者の立場で考える (既存クラスを継承して子クラスを作る人) 開発チームの中で作るクラスの中から共通点がた…
☆ 正しい継承 「is-aの原則」と言われるルールに則っている継承 is-aの原則とは? 子クラスは親クラスの一種であるということ ex. 親 Hero 子 SuperHero SuperHeroはあくまでHeroの一種 ☆ 間違った継承 概念としてis-aの関係がないにも関わらず、継承を使っ…
〈子クラスから親クラスのコンストラクタの呼び出す〉 インスタンス作成の際のJVM内部の動作 new superHero( ); // mainメソッドからインスタンスを作れという命令が送られる ① まず、親インスタンス部が作られる ② 外側に子インスタンス部が作られる ③ JVM…
〈親クラスのメンバを呼び出す〉 親クラス void run( ){ System.out.println("逃げ出した"): } 子クラス(オーバーライド 再定義) void run( ){ System.out.println("撤退した"); } ※子クラス側でrun( );メソッドの中身は再定義しているが、親クラスのrun( );…
オーバーライド もし継承されたクラス(子クラス)で親クラスから自動で継承されているコード(自動なので記述しなくても良いコード)を そのまま使うのではなく子クラスの場合だけ変更したい時は? ⇩ 子クラス側で変えたいメソッドを再度定義する(メソッドの上…
「継承」という概念はなぜ生まれたのか? たくさんクラスを作るうちに「以前作ったクラスによく似ているが、一部だけ違うクラス」というのが出てくる →一部しか違わないのに同じようなコードを何度も書くのは面倒... ex.前記述したクラスと比べて、フィール…
☆ クラスに対するアクセス制御 (名前) (記述) (許可) package private なし 自分と同じパッケージに属するクラス public public 全てのクラス ex. class HeroSkill{ ←記述なしなので、package private public void use( ){.... } } ・・・メソッドはpu…
〈フィールドを書き換えたい時〉 class Hero{ private int hp; hpフィールドは他のクラスからはアクセス出来ないが、 同じクラス内のattack( );やsleep( );のようなメソッドからであれば アクセス(書き換え)が出来る →この場合は、通常通り this.hpで書き換…
オブジェクト指向のプログラミングでは、効率良く、安全にコードを書く仕組みが大きく分けると3つある。 1つ目 カプセル化 フィールドへの読み書きやメソッドの呼び出しを制御する機能(アクセス制御) ex. このメソッドはAクラスからは呼び出し可だが、Bク…