在下面的代码中,我向方法“testmethod()”传递了A类的子类B的实例化对象。
不幸的是,该方法的签名接受的是超类A而不是子类B,并且我无法更改该签名,因为它被许多类引用。
有没有一种方法(不更改testmethod()的签名),可以从testmethod()中访问被传递给testmethod的对象中的var2变量?
不幸的是,该方法的签名接受的是超类A而不是子类B,并且我无法更改该签名,因为它被许多类引用。
有没有一种方法(不更改testmethod()的签名),可以从testmethod()中访问被传递给testmethod的对象中的var2变量?
public class test5 {
public static void main(String args[]){
B b = new B();
testmethod(b);
}
public static void testmethod(A a2 ) {
System.out.println("in testmeth->" + a2.getVar1() ); // WORKS
System.out.println("in testmeth->" + a2.getVar2() ); // DOESNT WORK
}
}
class A {
int var1 = 2;
public int getVar1() {
return var1;
}
}
class B extends A {
int var2 = 8;
public int getVar2() {
return var2;
}
testmethod()
请求一个A
的实例,那么它应该使用A
上的操作。如果它需要一个B
,则方法签名应该要求一个B
。 - David