2017-02-20 19 views
-2

私はjavaを初めて使っているので、これは愚かな質問かもしれません。私のスーパークラスには、汎用オブジェクトを取り込んでオブジェクトを返すメソッドがあります。私のサブクラスでは、他の場所で定義した抽象クラスを返すメソッドをオーバーライド/狭めようとしています。基本的には、このオーバーライドで実行する必要があるのは、同じメソッドをプリコンパイルすることですが、オブジェクトをより狭いクラスに置き換えます。これをどうやって行うのですか?それは1行または2つのコードでなければなりませんが、私はそれの構文を知らないだけです。Java。メソッド戻り値の型をオーバーライドして絞り込む

だから、スーパークラス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. 
    } 
} 
+3

コードを表示するか、誰も助けることができません。投稿を編集し、あなたの質問を示す[mcve]を含めてください。 –

答えて

0
  1. retを絞り込む構文を確認するには壷のタイプはこれを参照してください。Can overridden methods differ in return type?あなたは抽象クラスのオブジェクトをインスタンス化することはできませんsuper.doSomething()

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

  3. (基本的にはこの権利をやっています)。あなたはそれを拡張し、拡張クラスのオブジェクトを返すべきです

関連する問題