Javaでのコヒーレント戻りタイプの理解

2054 ワード

オブジェクト向けプログラミングでは、コヒーレント戻りタイプとは、サブクラスのメンバー関数の戻り値タイプが、親クラスで書き換えられたメンバー関数の戻り値タイプと厳密に等しくなく、より「狭い」タイプであってもよいことを意味します.Java 5.0では、サブクラスがベースクラスメソッドを上書き(書き換え)する場合、返されるタイプは、ベースクラスメソッドがタイプを返すサブクラスとしてサポートされています.コヒーレント戻りタイプでは、より特定のタイプを返すことができます.     サンプル・プログラムは次のとおりです.
import java.io.ByteArrayInputStream;

import java.io.InputStream;



class Base

{

    //  Derive      ,        InputStream   

   public InputStream getInput()

   {

      return System.in;

   }

}

public  class Derive extends Base

{

    

    @Override

    public ByteArrayInputStream getInput()

    {

        

        return new ByteArrayInputStream(new byte[1024]);

    }

    public static void main(String[] args)

    {

        Derive d=new Derive();

        System.out.println(d.getInput().getClass());

    }

}

/*    :

class java.io.ByteArrayInputStream

*/