現在、Java と C++ の基礎を学んでいます。Let Us C++という本を読んだことがありますが、ほとんどの場合、セキュリティ上の目的でインスタンス変数を非公開にし、メソッドを公開していると書かれています。しかし、この本では、場合によっては変数を公開し、メソッドを非公開にすることも言及されています..
どのような場合にそうするか、常に考えています。誰でもこれを説明できますか。
通常、静的最終変数はクラス内で公開されます。その変数の値を変更する必要がなく、他のクラスがそれにアクセスできるようにする場合は、public static final にします。
プライベート メソッドは、そのクラスの内部にあるタスクを実行するためにクラス内でのみ使用されます。効用法やビジネス計算法のように。または、メソッドが大きくなりすぎないように、パブリック メソッドのコードを複数のプライベート メソッドに分割するだけです。
経験則として、 public
他のクラスがアクセスしても問題ない場合にメソッドを作成します。内部メソッドまたはヘルパー メソッドは、 または のいずれかである必要がありprotected
ますprivate
。Protected
クラスを拡張する人がメソッドを拡張できるようにしたい場合は、ただし、これを望まない場合は、それらをマークしてくださいprivate
。
メソッドがクラスの他のメソッド (パブリック) によって使用され、オブジェクトがそのメソッドに直接アクセスすることを望まない場合、そのメソッドをプライベートとして作成します。
また、場合によっては、クラス オブジェクトから変数に直接アクセスしたい場合は、変数をパブリックにします。
他のクラスで変数やメソッドが必要ない場合は、公開しないでください。これは、メソッドと変数に当てはまります。
プライベート変数または関数は、宣言されているクラスでのみ使用できます。
パブリック変数またはパブリック関数は、アプリケーションのどこでも使用できます。
したがって、属するクラスでのみ使用するすべての変数と関数をプライベートに宣言する必要があります。
例:
public class Car {
private String model;
public setModel(String model) {
if (model != null)
this.model = model;
}
public getModel() {
return model;
}
private doSomething() {
model = "Ford";
}
}
クラス Car では、String モデルをプライベートとして宣言します。これは、クラス Car でのみ使用するためです。これにより、関数 setModel を使用しない限り、他のクラスがこの String の値を変更できないことが保証されます。
関数 setModel と getModel は public であるため、これらのメソッドを使用してのみ、他のクラスからプライベート変数モデルにアクセスできます。
この例では、関数 setModel は値が null かどうかをチェックし、null の場合は値を設定しません。ここで、String モデルを public として宣言した場合、記録される値を制御できないことがわかります。
関数 doSomething はプライベートであり、他のクラスは使用できません。一方、この関数はプライベートであり、String モデルと同じクラスに属しているため、メソッド setModel を使用せずに値を変更できます。