-2

わかりましたので、私はJavaが初めてなので、これはばかげた質問かもしれません。私のスーパークラスには、ジェネリック オブジェクトを受け取り、オブジェクトを返すメソッドがあります。私のサブクラスでは、メソッドをオーバーライド/絞り込んで、別の場所で定義した抽象クラスを返そうとしています。基本的に、このオーバーライドで行う必要があるのは、同じメソッドを実行することだけですが、Object をより狭いクラスに置き換えます。どうすればこれを行うことができますか?1行か2行のコードでよいのですが、構文がわかりません。

したがって、SuperClass Foo には次のようなメソッドがあります。

public abstract class Foo {
    public Object doSomething() {
        Object objVar;  
        //does stuff to objVar
        return objVar;
    }
}

次に、差分 Java ファイル内のオブジェクトのコンストラクター:

public abstract class Zee {
     //constructors & methods for zee
}

次に、サブクラスで:

public class Subbie extends Foo { 
     @Override
     public Zee doSomething() { //covariant return type?? maybe?  


     return //needs to preform the same actions 
            //as the super doSomething method, but with 
            //the narrower return type.
     }  
} 
4

1 に答える 1

0
  1. 戻り値の型を絞り込むための構文を確認するには、これを参照してください:オーバーライドされたメソッドは戻り値の型で異なる可能性がありますか? (基本的に、あなたはこれを正しくやっています)

  2. 親クラスの使用からメソッドを呼び出すにはsuper.doSomething()

  3. 抽象クラスのオブジェクトをインスタンス化することはできません。それを拡張して、拡張されたクラスのオブジェクトを返す必要があります

于 2017-02-20T08:35:16.353 に答える