これはJavaのコンストラクタについての私の知識と誤解されているかどうかは不明ですが、最近CodingGroundでテストされたコードで質問に答えました。コードがあって、最も単純な形で:私はそれを実行したときに今これは、罰金コンパイルけどJavaコンストラクタが呼び出されていませんか?
class A {
int myX;
public void A() {
System.out.println("A constructor");
}
public void setValue(int x) {
System.out.println("A setter");
myX = x;
}
}
public class HelloWorld{
public static void main(String []args){
A a = new A();
a.setValue(7);
}
}
、出力されました:
A setter
コンストラクタ呼び出しからの出力に何が起こりましたか?
実際には、コンストラクタが呼び出されていないので、出力があまり消えないようです。コンストラクタに
myX = 42;
とやってセッターを変更します:は、ので、私は追加するとき
System.out.println("A setter: " + myX);
値を変更する前に、私が見出力は次のようになります。
A setter: 0
でつまり、初期値は決して42
に設定されていません。
のデフォルトコンストラクタは、あなたがコンストラクタを持っていないです。)(デフォルト以外の) –
@paxdiablo私は誰かがha 458Kを超えると、常に小さなものを逃すことができます:-)。 public void A()をpublic A()に変更します。 – HenryDev
@HenryDev、ええ、私はC#/ Mono/C++に大きく依存しています。 – paxdiablo