У меня есть суперкласс и один подкласс с некоторыми переменными, как показано ниже:
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.
update
Я пытался использовать instanceOf
как вышеописанный метод. Но таким образом компилятор не находит специфический метод подкласса.