[英]how do i get a specific attribute from an inherited class when using an array from another class?
我是 Java 編程的新手,遇到了一個小問題。
我寫了兩個類,第一個名為Human
,第二個名為Student
,它擴展了Human
所以,簡而言之,我創建了一個Human
類型的數組,現在我想 output 一個特定的Student
屬性,我想檢查輸入的數組的值是否是Student
。 問題是數組類型是Human
,我不能要求一個專有的Student
屬性。
提前感謝您的回答。
編碼:
for (int i = 0; i < 4; i++) {
if (Menschen[i] instanceof Student) {
System.out.println("Name: " + Menschen[i].getName() + ", Geschlecht"
+ Menschen[i].getGeschlecht() + ", Matrikelnummer: "
+ ", Typ: " + Menschen[i].getTyp());
} else {
System.out.println("Name; " + Menschen[i].getName() + ", Geschlecht"
+ Menschen[i].getGeschlecht()+", Typ: "+Menschen[i].getTyp() + ".");
}
}
根據我從您的問題中收集到的信息,我認為您可以通過將Human
轉換為Student
來解決這個問題。
所以,在你的if
里面:
Student s = (Student) Menschen[i];
然后您可以使用Student s
引用訪問與您的Menschen[i]
對應的Student
的屬性。 那是你問的嗎?
如果使用 Java 14 你可以這樣做:
if (Menschen[i] instanceof Student student) {
student.studentSpecificMethod();
} else {
...
}
編輯:對於早期的 Java 版本,請參閱 Mario MG 的答案
但通常很少需要instanceof
。 只要有可能,最好嘗試設計一種通用方法,該方法將在特定子類中被覆蓋。
EDIT2:您可以完全擺脫i
計數器
for (Human mensch : Menschen) { //please name variables in lowercase, so Menschen -> menschen
if (mensch instanceof Student student) {
...
} else {
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.