我有一个超类和一个带有某些变量的子类,如下所示:
public class A{
private int first;
private int second;
public A(int _first,int _second){
first = _first;
second = _second;
}
public int getFirst(){
return first;
}
}
public class B extends A{
private int third;
public B(int _first,int _second,int _third){
super(_first,_second);
third = _third;
}
public int getThird(){
return third;
}
}
我想在主类中构建一个接受通用参数的方法,该参数可以是A
类型,也可以是B
类型,如下所示:
public class Main{
public int val = 2;
public static void main(String []args){
A a = new A(1,2);
B b = new B(1,2,3);
printObject(a);
printObject(b);
}
public void printObject(A a){
int f = a.getFirst() * val;
int s = a.getSecond() * val;
if(a instanceOf B){
int t = a.getThird() * val; // compiler does not find the getThird() method this way
}
}
}
如何实现?泛型是一种选择吗?我曾考虑过在printObject()
内制作A
方法,然后在B
内重写它,但是我还有其他一些像val
这样的变量,是我在main中创建的。
更新
我尝试像上述方法一样使用instanceOf
。但是通过这种方式,编译器无法找到子类的特定方法。