オブジェクト指向の3大機能のカプセル化と継承についてまとめる。
##カプセル化の目的
カプセル化とはフィールドへの読み書きやメソッドの呼び出しを制限するための機能で、
カプセル化を行うことで例えば呼び出し元を制限することができたり、フィールドの内容は読み込むことができるが、書き込むことはさせないといったことが可能になる。
##カプセル化の実装
アクセス制御を設定することでカプセル化を行う
アクセス制御を設定するにはアクセス修飾子を利用する
アクセス修飾子は以下のものがある
名前 | アクセス許可の範囲 |
---|---|
private | 自分自身のクラスのみ |
protected | 自分と同じパッケージか、自分を継承したクラス |
public | すべてのクラス |
##カプセル化の定石
フィールドにはprivate
メソッドにはpublic
フィールドにアクセスするためにgetterやsetterを用意する
setter内で引数の妥当性検査も行う
##継承の目的
似たクラスを再利用するために使用
##継承のメリット
親要素にメソッドやフィールドを追加することで子要素に個別で設定しなくてすむ
オーバーライドを実施することで動作を個別に変更する事も出来る
##継承の実装例
例
class Car {
private double gas;
}
class superCar extends Car {
private int speed;
}
こうするとスーパーカーはCarのgasのフィールドに加えスピードのフィールドも所持できる
##インターフェイス
メソッドを定義しインターフェイスを実装したクラスには定義したメソッドの定義を強制させる
多重継承が許可されている
##実装例
interface Human {
public void run();
}
class taro implements Human {
//runメソッドを定義してないためtaroはエラーを起こす
}