【发布时间】:2019-11-05 12:54:03
【问题描述】:
我有一个超类和一个子类,其中包含一些变量,如下所示:
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
}
}
}
如何做到这一点?泛型是一种选择吗?我曾考虑在A 中创建printObject() 方法,然后在B 中覆盖它,但是我在main 中创建了一些其他变量,例如上面的val。
更新
我尝试像上面的方法一样使用instanceOf。但是这种方式编译器找不到子类的具体方法。
【问题讨论】:
-
如果 A 对象属于 A 类型,该脚本应该做什么?那么
t应该包含什么? -
评论中有一个 if 条件。 “如果对象是 B ... a.getThird 的一个实例”。我想相关的问题是方法属性可以同时接受 A 类(超类)和 B 类(子类)吗?
-
请尝试编写一些涵盖此内容的代码。我不认为泛型可以帮助您 - 请查看泛型的概念并编辑您的问题以涵盖您的问题与泛型之间的任何联系
-
我并不是说泛型是我唯一的选择。任何工作都很好。我认为这是一个非常合理的问题。如何编写一个接受基类中任何类型的方法?
标签: java oop generics inheritance subclassing