類別有兩種重要的成員:成員變數和方法。子類別的成員中有一部分是子類別自己聲明定義的,另一部分是從它的父類別繼承的。子類別繼承父類別的成員變數作為自己的一個成員變量,就好像該成員變數是在子類別中直接聲明一樣,可以被子類別中自己定義的任何實例方法操作。子類別繼承父類別的方法作為自己的一個方法,就好像該方法是在子類別中直接定義一樣,可以被子類別中自己定義的任何實例方法呼叫。
子類別和父類別在同一包中的繼承性:
如果子類別和父類別在同一個套件中,那麼子類別自然地繼承了其父類別中不是private的成員變數作為自己的成員變量,並且也自然地繼承了父類別中不是private的方法作為自己的方法,繼承的成員變數或方法的存取權限保持不變。
子類別和父類別不在同一包中的繼承性:
如果子類別和父類別不在同一個套件中,父類別中的private和友好存取權限的成員變數不會被子類別繼承,即子類別只繼承父類別中的protected和public存取權限的成員變數和方法作為子類別的成員變數和方法。
關於protected的進一步說明:
一個類別A中的protected成員變數和方法可以被它的子孫類別繼承,例如B是A的子類,C是B的子類,D又是C的子類,那麼B、C和D類別都繼承了A類的protected成員變數和方法。
如果用D類別在D本身中建立了一個對象,那麼該物件總是可以透過「.」運算子存取繼承的或自己定義的protected變數和protected方法,但是,如果在另外一個類別中,例如在Other類別中用D類別建立了一個物件object,該物件透過「.」運算子存取protected變數和protected方法的權限如下所述:
1. 對於子類別D自己宣告的protected成員變數和方法,只要Other類別和D類別在同一個套件中,object物件就可以存取這些protected成員變數和方法。
2. 對於子類D從父類繼承的protected成員變數或protected方法,需要追溯到這些protected成員變數或方法所在的「祖先」類,例如可能是A類,只要Other類和A類在同一個包中,object物件就能存取繼承的protected變數和protected方法。