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
*/