我有一个 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
将始终打印字符串“success!”。
我认为我需要覆盖 A1
类的方法 foo()
,
并通过从 C1
上的主函数获取参数数量来重写它,以获得正确的返回值。
我的问题是我不知道该怎么做。 (请记住,我不允许通过编写 A1 a = new B1(args.length)
而不是 A1 a = new B1()
来解决这个问题。那' d太容易了。)
任何关于如何做到这一点的建议,甚至是完全不同的解决方案,我们都将不胜感激!
最佳答案
由于 secret
是静态的,您可以创建一个新的 C1
并在其上调用 foo
,只需确保将结果反转为嗯:
class B1 extends A1 {
public boolean foo() {
return !(new C1().foo());
}
}
关于Java 难题访问 main 的参数而不传入它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52580234/