Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaの共変リターンタイプとは何ですか?


一般に、オーバーライドでは、スーパークラスとサブクラスのメソッドは同じ名前とパラメーターを持ちます。ただし、型を返す場合、サブクラスのメソッドは、スーパークラスのメソッドの戻り型のサブタイプを返すことができます。

次の例を見ると、スーパークラスには demoMethod()という名前のメソッドがあります タイプリストの値を返します。このメソッドをオーバーライドすると、サブクラスのメソッドはリストタイプの値を返すことができます。 (スーパークラスにあります)または、リストのサブタイプを返すこともできます (スーパークラスのメソッドの戻り型)ArrayList、Stack、Vectorなど

このシナリオでは、サブクラスメソッドは、スーパークラスの戻り型のサブタイプであるArrayList、つまりListを返します。このサブタイプ(ArrayList)はとして知られています 共変タイプ

class Test{
   int data =100;
   Test demoMethod(){
      return this;
   }
}
public class Sample extends Test{
   int data = 1000;
   Sample demoMethod(){
      return this;
   }
   public static void main(String args[]){
      Sample sam = new Sample();
      System.out.println(sam.demoMethod().data);
   }
}

出力

1000

  1. C言語の主要なデータ型は何ですか?

    「C」コンパイラは、4つの基本的なデータ型をサポートしています。それらは次のとおりです- 整数 キャラクター 浮動小数点 倍精度浮動小数点 プライマリデータ型 整数データ型 整数データ型は、整数と文字を格納するために使用されます。 さらに2つのタイプに分類されます- 整数データ型。 文字データ型。 整数データ型 このデータ型は、整数を格納するために使用されます。 整数ストレージは、符号付き形式と符号なし形式の両方で、short int、int、およびlongintです。 整数データ型 タイプ サイズ(バイト単位) 範囲 制御文字列 short in(ま

  2. Javaのpaint()メソッドとrepaint()メソッドの違いは何ですか?

    Paint()とRepaint() paint(): このメソッドは、このコンポーネントをペイントするための命令を保持します。 Java Swingでは、paintが paintBorder()を呼び出すときに、paint()メソッドの代わりにpaintComponent()メソッドを変更できます。 paintComponent() およびpaintChildren() メソッド。このメソッドを直接呼び出すことはできません。代わりに、 repaint()を呼び出すことができます。 。 repaint() :このメソッドはオーバーライドできません。 paint()を制御します サイ