Java 重写方法中的类型兼容性问题

Java 重写方法中的类型兼容性问题,java,overriding,Java,Overriding,我知道父类类中的方法,如果要在子类中重写,则需要具有相同的名称、相同的参数和相同的或子类类型返回类型 但是,如果我们在父类中有一个返回类型为long的方法,并且同名(试图重载)方法具有相同数量和相同类型的参数,但返回类型为int,那么编译器开始抱怨,尽管int即使没有强制转换也可以转换为long 那么为什么它只适用于类类型而不适用于原语呢 这仅仅是因为int不是long的子类型,这是因为重载方法的返回类型必须与父方法(重写方法)的返回类型相同或是子类因为int不是long的子类,所以不能这样做。

我知道
父类
类中的方法,如果要在
子类
中重写,则需要具有相同的名称、相同的参数和相同的或子类类型返回类型

但是,如果我们在
父类中有一个返回类型为
long
的方法,并且同名(试图重载)方法具有相同数量和相同类型的参数,但返回类型为
int
,那么编译器开始抱怨,尽管
int
即使没有强制转换也可以转换为
long


那么为什么它只适用于类类型而不适用于原语呢

这仅仅是因为
int
不是
long

的子类型,这是因为重载方法的返回类型必须与父方法(重写方法)的返回类型相同或是子类因为
int
不是
long
的子类,所以不能这样做。自动装箱允许int和long之间看似自动的转换,但其中一个不是另一个的子类。有关详细信息,请参阅或。

因为Int不是long的子类。。。当您试图将int赋值给long时,它不会显示任何错误,因为java中的自动装箱概念。。。但自动装箱不适用于覆盖概念…

但它是兼容的,因为子类与类类型兼容,两个都不是另一个的子类型。但它是兼容的,因为子类与类类型兼容,我们可以将int分配给long,因为子类类型分配给基类?如果您将子类的实例分配给基类的变量该变量保存子类的实例。但是如果你把一个int赋值给一个long,int就会转换成long。自动装箱与问题本身无关。它是自动装箱。。。Java将int转换为long而不进行显式转换…@KanagarajM请发送一个关于它的链接,从技术上讲,它是一个扩展的原语转换,而不是自动装箱。自动装箱是完全不同的。