LoginSignup
3
1

More than 5 years have passed since last update.

カプセル化と継承について

Last updated at Posted at 2018-08-08

オブジェクト指向の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はエラーを起こす
}
3
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1