これは他の場所で回答されていると確信しているので、謝罪することから始めます-私が理解している方法でそれを説明する回答が見つかりません! 私は修士課程の変換コースを行っていますが、これを含め、まだ苦労しているいくつかの基本的な基本があります-変数をプライベートにする方が良い理由.
print メソッドを持つ Person という Java クラスがあるとします。私はそれを作成し、そのように定義することができました:
public class Person
{
public String name;
public String telephoneNumber;
public void print()
{
System.out.println(name + " " + telephoneNumber);
}
}
次に、メイン クラスで、次のコードを記述できます。
class testPerson
{
public static void main(String[] args)
{
Person test;
test = new Person();
test.name = "Mary";
test.telephoneNumber = "01234 567890";
test.print();
}
}
これを行った場合、test.print(); 出力が生成されます。
mary 01234 567890
ただし、これは不適切なコーディングと見なされます。変数は、パブリック クラス内でプライベートにする必要があります。これは、この情報がどのように格納されているかを人々に見せたり、承認なしに情報を編集したりできないようにするためです。
そこで、Person クラスを編集して 2 つの Strings をプライベートに宣言し、次のように get メソッドと set メソッドを追加します。
private String name;
private String telephoneNumber;
public void setName (String name)
{
this.name = name;
}
public void getName()
{
return name;
}
// same code for telephone methods.
ここで、メイン クラスで、名前と電話を設定するメソッドを次のように変更します。
mary.setName("Mary");
mary.settelephoneNumber("01234 567890");
私がフォローしているレクチャー ノートによると、これはより効率的です (ただし、Person() メソッドを追加してインスタンス化などを可能にすることでさらに効率的にすることができます)。
しかし、なぜこれが優れているのかを理解するのに苦労しています。
前者の方法では、ユーザーは変数に直接アクセスできました。ただし、直接アクセスできない変数を非表示にしても、ユーザーは間接的にアクセスして変更することができ、まったく同じ結果が得られます。
これが好まれるのはなぜですか、そして間違いなく愚かなことは何ですか?