0
0

More than 3 years have passed since last update.

java(カプセル化)

Last updated at Posted at 2020-06-14

カプセル化

・フィールドに不正な値が入らないように防ぐ
・「矛盾しないクラス」を作る
・「現実世界を忠実に真似る」オブジェクト指向の本質と直結している

フィールド、メソッドに対してアクセス制限を行う

アクセス修飾子(しゅうしょくし)

名称     指定方法    アクセスを許可する範囲
private                   private 自分自身のクラスのみ
package private      (何も書かない)  自分と同じパッケージに属するクラス
protected protected 自分と同じパッケージに属するか、自分を継承した子のクラス
public public 全てのクラス

メンバに関するアクセス修飾子の定石

・フィールドは全てprivate
・メソッドは全てpublic

getterとsetter

・メソッドを経由したフィールドの操作

getter

・「get」+「フィールド名の先頭を大文字にしたもの」
・nameフィールドの中身を呼び出して元に返すだけのメソッド

Hero.java
public class Hero {
  private String name;

  public String getName() {  //getName()を経由してnameフィールドにアクセス
    return this.name;
  }
}
King.java
public class King {
  void talk(Hero h) {
    System.out.println("王様:ようこそ我が国へ、勇者" + h.getName() + "よ。");
  }
}

setter

・「set」+「フィールド名の先頭を大文字にしたもの」
・値を代入するだけのメソッド(他のクラスで)

Hero.java
public class Hero {
  private String name;

  public void setName(String name) {
    this.name = name;    //this.は絶対に忘れないように
  }
}

クラスに対するアクセス制御

名称     指定方法    アクセスを許可する範囲
package private      (何も書かない)  自分と同じパッケージに属するクラス
public public           全てのクラス

非public(package private)クラスの特徴

・クラス名はソースファイル名と異なってもよい
・1つのソースファイルにクラスを複数宣言してもよい

Hero.java
public class Hero {
}
class HeroSkill {
}
class HeroSinbol {
}
Hero.java
class Character {
}
class Boss {
}
0
0
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
0
0