0

時間を割いて回答してくださった方には、あらかじめ感謝いたします。

さて、私はこのクラスを持っています:

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) を返す関数があります。また、クラスには、文字列「do something Class」を出力するメソッドがあり、これをサブクラスでオーバーライドして「Subclass do something」を出力しました。

メイン メソッドでは、クラス オブジェクト ("object") とサブクラス オブジェクト ("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)

私は何を誤解しているか、間違っていますか?

ありがとうございました。

4

2 に答える 2