Md.*_*mud 0 java int primitive overriding short
我有一个名为child的子类,它继承了一个名为parent的类.我试图覆盖超类中的方法.我做了一点实验.我创建了overriden方法,其返回类型为short,这是int的子类型.据我所知,我可以这样做.并且该方法在法律上被覆盖.每当我使用超类的引用调用该方法时,编译器都会生成不兼容的返回类型错误.这有什么问题?我的代码如下:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
short是int的子类型
错了,事实并非如此.的取值范围short是一个子集的那的int,但是这是一个完全不同的问题.甲short值确实可以被转换为一个int(甚至隐含地),仍然是一个short 没有一个int.
原始类型不是常规类,因此它们不能具有超类型/子类型关系.因此,在这种情况下,您不能使用返回类型的逆变:一旦int在基本方法中声明了返回类型,它的所有重写都必须返回int.