标签: java method-overriding
我知道Parent类中的方法,如果要在Child类中重写,则需要具有相同的名称,相同的参数和相同的或Subclass类型的返回类型。
Parent
Child
Subclass
但是如果我们在long类中有一个返回类型为Parent的方法,并且具有相同数量和相同类型的参数的相同命名(尝试重载)方法但返回类型为{{1}然后编译器开始抱怨,尽管即使没有强制转换,int也可以转换为int。
long
int
那么为什么它只适用于类类型而不适用于原语?
答案 0 :(得分:1)
这只是因为int不是long的子类型。
答案 1 :(得分:1)
那是因为重载方法的返回类型必须是父方法(覆盖方法)返回类型的相同或子类。 由于int不是long的子类,因此您无法执行此操作。自动装箱允许在int和long之间进行看似自动的转换,但是一个不是另一个的子类。有关详情,请参阅here或here。
答案 2 :(得分:1)
因为Int不是long的子类...当你尝试将int赋值为long时,由于java中的自动装箱概念,它不会显示任何错误...但是自动装箱不适用于覆盖概念...