我有一个Main类,一个X类和一个Z类。
X的方法是a()。
Z的方法是b()。
Main在Z中调用方法b(),然后在X中调用方法a()。
然后我用我的类X2及其方法a2()。
是否有可能在不改变Main或X的情况下强制Main使用X2中的方法a2()而不是X中的(),通过Z的b()方法?
答案 0 :(得分:2)
不,你不能这样做,因为Main类仍然创建一个X X x = new X()
的实例。
如果您将Main中的调用更改为X.a()
,则让Main类调用覆盖X x = new X2()
的方法的唯一方法。
答案 1 :(得分:0)
如果我理解你的问题,那么是的,如果Z负责创建X,X2扩展X.这称为多态。考虑这个例子:
public class X {
public void a() {
System.out.println("X.a");
}
}
public class X2 extends X {
public void a() {
System.out.println("X2.a");
}
}
public class Z {
private X my_x;
public Z() {
this.my_x = new X2();
}
public X getX() {
return my_x;
}
public void b() {
System.out.println("Z.b");
}
}
public class Main {
public static void main(String[] Args) {
Z z = new Z();
X x = z.getX();
z.b();
x.a(); // this prints. X2.a
}
}