次の例のintbarのように、クラス内にフィールドを作成できます。
Class foo{
int bar;
foo(int bar){
bar = bar;
}
int getBar() {
return bar;
}
void setBar(int bar) {
bar = bar;
}
}
別のクラスで新しいfooオブジェクトを作成するたびに、その特定のオブジェクト(fooのインスタンス)には、setBar()で変更したときにそのインスタンスにのみ影響し、他のインスタンスには影響しないbarプロパティがありますか?
上記の例では、barのようなプロパティのゲッターとセッターを作成する人をよく見かけます。怠惰で自分自身/楽しみのためにコードを書いているだけの場合
FooInstance1.bar = 22;
、セッターを書く代わりに、プロパティにアクセスしてこのクラスの任意のインスタンスのbarプロパティを変更できますか?問題と同じ効果があります1(インスタンスのみが変更されます)?Javaコンパイラはどのメソッドがコンストラクタであるかをどのように知るのですか?それがクラスと同じ名前を持っているという事実によって?または、関数ヘッダーで戻り値を指定しないという事実によって?おそらく、コンパイラーがコンストラクターであると考えることさえ問題ではありません(通常の関数間の構文上の違いはありません)、それは人々が関数の意味を区別するために使用する単なる意味論的なものである可能性があります。
編集:私はベストアンサーを選択するのに苦労しています。みんなから何か新しいことを学びました。ありがとう!