我的背景是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