这个问题我在面试时被问到Java程序员。看下面的代码。我需要进行最小的更改才能使 a.f2(); 有效。
public class A {
void f1(){}
}
public class B extends A {
void f2(){}
}
void main(String[] args) {
A a = ... <- free space here
a.f1();
}
额外1 我已将void f2(){}添加到A类中,但已被要求以其他方式进行。
额外2 此代码中没有更多可用空间
enter code here
答案 0 :(得分:3)
public class B {
void f1(){}
}
public class A extends B {
void f2(){}
}
void main(String[] args) {
A a = new A();
a.f2();
}
答案 1 :(得分:1)
你有几个选择
B a = new B()
的引用变量(忽略命名违规;))然后,如果你打电话
A o = new B();
o.f2();
它将调用对象B中的f2()
在<- free space here
中没有任何内容可以让它在B中调用f2()我很害怕。也许是一个技巧面试问题?
答案 2 :(得分:1)
我会做以下事情:
A a = new B();
然后将其投射到B并调用f2:
((B) a).f2();
答案 3 :(得分:0)
只有这样:)
void main(String[] args) {
B a = new B();
a.f2();
}
答案 4 :(得分:0)
可能你可以使用
来实现它public static void main(String[] args) {
Parent p=new Child();
((Child)p).f2();
}
仅在提供的可用空间内进行所有更改:)