X z = new Y();
は、コンパイル時にclass X
のインスタンスとしてz
を処理しますが、実行時にはclass Y
のインスタンスとして処理することを意味します。コンパイル時/ランタイムの追加
なぜ、z.method((byte)0 + (char)0);
が実行時に処理されるのですか?これらの2つの定数は加算されないので、実行時ではなくコンパイル時に決定できますか?
class X {
void method(int x) { System.out.println("X:int"); }
}
class Y extends X {
void method(int x) { System.out.println("Y:int"); }
}
public class Z {
public static void main(String[] args) {
X x = new X();
X z = new Y();
System.out.println("1:");
z.method((byte)0 + (char)0);
}
}
出力:追加が関連しているどのように私は見ていない
1:
Y:int
初心者向けのヒント:以前の研究を行うことが期待されています。特にあなたがここで新しい/ javaになったとき:あなたはこの質問をする最初の人ではない可能性が非常に高いです。だから、良い質問を書くために15分を費やす前に、この質問が以前に尋ねられたかどうかを確認するのにちょうど数分を費やしました。 – GhostCat
私は知っていますが、どのようにすべての該当する用語を知っていると思いますか? – LifeisHard
私は改訂履歴にそれ以上のことを示すのではなく、他の人にはわかりません。元の質問は、オーバーロードされたメソッドに 'null 'を渡すことでした。 –