Java繼承規則中的訪問控制
方法的繼承
Java中子類繼承父類方法時,有如下規則:
父類或超類中的public方法,在子類中也必須是public。
父類中的protected方法,在子類中必須是protected或public,不能為private。
父類中private的方法不能被繼承。
屬性的繼承
另外,對於子類繼承父類屬性(成員變量)需注意:
從父類繼承的成員變量,其訪問控制符仍然相同。
子類定義與父類同名的成員變量,並沒有覆蓋父類的成員變量,而是兩個成員變量共存;默認情況下,父類的成員變量是被隱藏的,如果你非要調用父類的成員變量可使用super關鍵字。
靜態屬性方法的繼承
而對於靜態屬性(成員變量)與靜態方法:
靜態屬性和靜態方法可以被繼承,但是不是被重寫(override)而是被隱藏。這是因為靜態方法和屬性是屬於類的,調用的時候直接通過類名.方法名完成對,不需要繼承機制及可以調用。
靜態屬性、靜態方法和非靜態的屬性都可以被繼承和隱藏而不能被重寫,因此不能實現多態,不能實現父類的引用可以指向不同子類的對象;非靜態方法可以被繼承和重寫,因此可以實現多態。
C++繼承規則中的訪問控制
愛咋寫咋寫
#include <iostream>
using namespace std;
class father{
public:
int father ;
};
class son: public father{
public:
int father = 7;
};
int main()
{
son so ;
father *fa = new father(so);
cout << fa->father<< endl;
}