我的背景是C++。我知道什么是重载,什么是重载。 我想问一下,如果我不想从父类重写方法,并想使用不同的返回类型和同名方法创建自己的方法,为什么java不允许我这样做?为什么返回类型的相同命名方法应该在子类Java中相同?
例子:
class X{
public void k(){
}
}
public class Y extends X{
public int k(){
return 0;
}
}
为什么使用Java是这里将隐藏的概念?意味着Y类应该隐藏X的方法。背后的原因是什么?
C++应用隐藏的概念。
#include <iostream>
class A{
public:
void k(){
std::cout << "k from A";
}
};
class B:public A{
public:
int k(){
std::cout << "k from B";
return 0;
}
};
int main(){
B obj;
obj.k();
return 0;
}
为什么你要吗?例如,你失去了创建虚拟功能的可能性。 – Lasoloz
@Lasoloz为什么Java不允许改变返回类型。我知道如果我在C++中声明函数virual,那么我需要是相同的返回类型(但为什么?)为什么返回类型应该是相同的问题? – UnKnown