[英]How to access private fields in superclass from a subclass without using setters?
[英]How to access private variable from Superclass in Subclass without changing Superclass? (Java)
我現在正在為 class 做作業,它要求我在它的一個子類中使用來自超類的私有變量,但我不知道該怎么做。 我發現了很多關於更改可行的超類的信息,但是作業說我不能編輯超類,只能編輯它的子類。 這可能嗎?
就上下文而言,任務是根據不同員工的每周收入並打印出他們的信息(名字和姓氏、員工 ID、position 和收入)。 名字、姓氏和員工 ID 是私有的,我需要在子類中重寫超類中的一個方法。
來自超類的代碼:
public String toString(){
return "Name: " + firstName + " " + lastName + ", ID: " + employeeId;
}
來自子類的代碼(我正在寫)
// Override public String toString() here
/*public String toString(){
return ("Name: " + firstName + " " + lastName + ", ID: " + employeeId + " Position: Boss");
}*/
我嘗試在子類中使用 get 和 set,但這顯然不起作用。
如果你只需要toString()
output,你可以使用super.toString()
。
public String toString() {
return super.toString() + " earnings: " +earnings;
}
反射 API 在這里提供幫助。 在你的繼承class中,使用:
Field field = super
.getClass()
.getDeclaredField("firstName");
field.setAccessible(true);
String firstname = (String) field.get(super);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.