【发布时间】:2015-06-13 13:55:08
【问题描述】:
我获得了C 类和A 接口,我不能对它们进行任何更改。我应该写 B 类,这样代码总是会输出 success!
for 循环内C 类的代码中有两件事我不明白。
1) 我不明白调用了哪个 bar 方法。
2) 到达返回时返回到哪里?
我应该更改B 的实现以使其正常工作吗?
public interface A {
public String bar();
}
public class C extends B {
public int foo = 100;
public C(String s) {
super(s);
}
@Override
public void barbar() {
foo++;
}
public static void main(String[] args) {
String input = args[0];
StringBuilder builder = new StringBuilder(input);
C c = new C(input); //c=args[0]
B b = c; //b=args[0]
A a = b; //a=args[0]
for (int i = 0; i < args.length; i++) {
if (!builder.toString().equals(a.bar())) { //which bar is called?
return; //where does it return to? does it exist the for loop?
}
builder.append(input);
c.foo++;
}
if (c.foo - 99 == b.foo.length() / input.length()) {
System.out.println("success!");
}
}
}
public class B implements A {
public String foo;
public B(String s) {
this.foo=s;
}
public void barbar() {
// TODO Auto-generated method stub
}
@Override
public String bar() {
return this.foo;
}
}
【问题讨论】:
标签: java class binding static-methods