MrSonic:
私はトラブル解決を抱えているのJavaパズルを持っています。次の三つのクラスを考えます:
public class A1 {
protected boolean foo() {
return true;
}
}
public class B1 extends A1 {
}
public class C1 {
private static boolean secret = false;
public boolean foo() {
secret = !secret;
return secret;
}
public static void main(String[] args) {
C1 c = new C1();
for (int i = 0; i < args.length; i++) {
c.foo();
}
A1 a = new B1();
if (a.foo() == c.foo()) {
System.out.println("success!");
}
}
}
私は、しかし、私が欲しい、クラスB1を完了する必要がなくて変なクラスA1
およびC1
またはのためになるように、新しいファイルの追加、少なくとも一つの引数、C1
常に文字列に印刷します「の成功を!」。
私はメソッドオーバーライドする必要があることだと思うfoo()
クラスのをA1
、そして上のメイン関数から引数の数を取得することにより、それを書き換えC1
、右の戻り値を取得します。
私の問題は、私はそれを行う方法がわからないということです。(私は書くことによってこの問題を解決することはできませんよということを覚えておいてくださいA1 a = new B1(args.length)
代わりにA1 a = new B1()
。それはあまりにも簡単だろう。)
または、さえ全く異なる解決策を、それを行う方法上の任意の提案は、いただければ幸いです!
ジョーンVernee:
以来secret
、静的である、あなただけの新しい作成することができC1
、通話foo
だけで、同様の結果を反転してください、その上に:
class B1 extends A1 {
public boolean foo() {
return !(new C1().foo());
}
}