什麼之前,正確的層次結構與正確的類修飾符getter和setter方法
我的問題是simmilar這些: get super class value in java Getting the name of a sub-class from within a super-class
但不解決我的問題。所以,我要解釋它。我希望沒有重複的話題......
我創建一個層次。此層次結構僅適用於使用getter和setter的Object。只是爲了顯示信息。
嗯,我想正確地做我的層次,但沒有做一些ilogical與修飾。這是我班的一個簡單的例子,是不完全的Java是僞代碼:
Class A
private id;
Class B extends A
private dataB;
Class C extends A
private dataC;
變量「ID」是用於B類和C類常見的,因爲是B和C擴展A. 我在想,我從來不會使用A類來表示數據,只需要B和C,就像A是抽象類一樣。
我的問題是:
我不知道,如果是正確的put方法getter和setter A類與修飾符public和使用來自B類和C這個方法,因爲層次是正確的,是符合邏輯的,但數據「id」未正確封裝。
Class A
private id;
private name;
private age;
public getId(){...}
public getName(){...}
public getAge(){...}
Class B extends A
private dataB;
public getDataB(){...}
Class C extends A
private dataC;
public getDataC(){...}
要訪問我的目標我想這樣做:
B.getDataB();
B.getId();
B.getName();
B.getAge();
C.getDataC();
C.getId();
C.getName();
C.getAge();
這工作,但A類的所有方法必須是公開的,變量未正確封裝。
是否有其他方法可以做到這一點? 這是最好的/最壞的方式?吸氣劑和吸附劑可能是「跳」修飾劑的邏輯的例外嗎?
我excpect你能理解我的榜樣,我的「英語」。
謝謝您的高級。
你試圖解決什麼問題? B和C應該被期望繼承A的方法。使用getters/setter是一種實現封裝的策略。 –
類的私有屬性不會被子類繼承。因此,你必須明顯地在子類中使用getter和setter。如果你想直接訪問子類中的「id」等私有變量,則需要將它們聲明爲受保護的。 –