parentという名前のクラスを継承するchildという名前のサブクラスがあります。スーパークラスのメソッドをオーバーライドしようとしています。少し実験しました。intのサブタイプであるreturntypeshortを使用してオーバーライドされたメソッドを作成しました。私が知っている限り、私はそうすることができます。そして、メソッドは法的にオーバーライドされます。スーパークラスの参照を使用してメソッドを呼び出すと、コンパイラは互換性のない戻り型エラーを生成します。ここでの問題は何ですか?私のコードを以下に示します。
class parent
{
int test()
{
System.out.println("called inside parent\n");
return 1;
}
}
class child extends parent
{
short test()
{
System.out.println("called inside child\n");
return 1;
}
}
class Myclass
{
public static void main(String[] args)
{
parent a=new child();
a.test();
}
}