提前感谢任何花时间回答的人。
好的,所以我有这个类:
public class Class {
protected Integer numero=1;
public Class(){}
public void method (){
System.out.println("Class do something");}
public String function(Class Object){
String res;
res=Object.numero.toString();;
return res;}
而这个子类:
public class Subclass extends Class{
protected Integer numero=2;
@Override
public void method(){
System.out.println("Subclass do something");
}
}
两者都有一个名为“numero”的整数字段,但具有不同的值。Class 类有一个函数,它将 Class 对象作为参数并返回“numero”的值(1 表示类,2 表示子类)。此外,Class 有一个输出字符串“做某事类”的方法,我在子类中重写了它以输出“子类做某事”。
在 main 方法中,我实例化了一个 Class 对象(“object”)和一个 Subclass 对象(“subobjeto”)。然后我为每个运行该方法,并获得适当的输出。
但是,当我尝试使用 Subclass 对象作为参数从 Class 对象中打印函数的值时(如果我对多态性的理解是正确的,这是允许的),它返回 Class 字段“numero”的值(1) ,当我希望它返回“2”时。
public class Exe {
public static void main(String[] args) {
Class object= new Class();
Subclass subobjeto=new Subclass();
Class arreglo[]= new Class[2];
arreglo[0]=object;
arreglo[1]=subobjeto;
for(int i=0;i<arreglo.length;i++){
arreglo[i].method();
}
System.out.println(object.function(subobjeto)+" "+subobjeto.numero);
}
}
输出:
run:
Class do something
Subclass do something
1 2
BUILD SUCCESSFUL (total time: 0 seconds)
我有什么误解或做错了什么?
再次感谢你。