簡體   English   中英

使用來自另一個 class 的數組時,如何從繼承的 class 獲取特定屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM