【18章】Javaを学ぼう
今回の記事はオブジェクト指向の重要な機能の1つである、カプセル化によってフィールドとメソッドへのアクセスを制限することを学んでいきたいと思います。「【15章】Javaを学ぼう」から今回まで改善を重ねてきた自己紹介プログラムを今回も使用していきます。私自身のアウトプットの場となりますので、よろしくお願いいたします。
カプセル化について
「カプセル化」とは、使い手に必要ないものを隠してしまうことを言います。具体的にはフィールドとメソッドへのアクセスを制限することです。クラスの外部からアクセスできるようにするには「public」を、アクセスできないようにするには「private」を用いて定義します。
class Person {
.
.
private String middleName;
.
.
.
public String fullName() {
if(this.middleName == null) {
//クラス内からはアクセスできる
.
.
.
}
}
}
上図のようにprivateでも、クラス内からはアクセスすることが可能ですが、一方で下図のようにフィールドにクラスの外からアクセスすることができなくなります。
class Main {
public static void main(String[] args) {
Person person = new Person("Mia", "Christopher", "Olivia",......);
System.out.println(person.middleName);
//クラス外からはアクセスできない
}
}
ゲッターについて
フィールドをprivateにした上で、クラス外から安全にフィールドの値を取得するために、フィールドの値を返すだけのメソッドを定義します。これをゲッターと呼びます。
ゲッターは「getフィールド名」のように命名するのが一般的です。
class Person {
.
.
private String middleName;
.
.
.
public String getMiddleName() {
return this.middleName;
//フィールドの値を返す
}
}
class Main {
public static void main(String[] args) {
Person person = new Person("Mia", "Christopher", "Olivia",......);
System.out.println(person.getMiddleName());
//ゲッターを使うことによりアクセス可能に
}
}
これでクラス外からでもアクセスすることが可能になりました。
セッターについて
フィールドのアクセス権をprivateにすると、当然フィールドの値をクラスの外から変更することもできなくなります。そこで、フィールドの値を変更するメソッドを定義します。
このような、フィールドの値を変更するメソッドを特に「セッター」といいます。セッターは「setフィールド名」のように命名するのが一般的です。
class Person {
.
.
private String middleName;
.
.
.
public void setMiddleName(String middleName) {
this.middleName = middleName;
//フィールドに値をセット
}
}
class Main {
public static void main(String[] args) {
Person person = new Person("Mia", "Christopher", "Olivia",......);
Person.setMiddleName("Charlotte");
System.out.println(person.getMiddleName());
}
}
これでクラスの外から変更することができました。
今回の記事はここまでとします。これでひとまず自己紹介プログラムは完成しました。
次章では「オブジェクト指向」についてさらに基礎を定着させるための記事を書いていきます。よろしくお願いいたします!
最後までご覧いただき、ありがとうございました!
Author And Source
この問題について(【18章】Javaを学ぼう), 我々は、より多くの情報をここで見つけました https://qiita.com/haruki25596/items/2c1b7f5371a048c8e336著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .