該程序要求用戶輸入兩次 name 和 employmentId,而它只需要一次。我正在嘗試使用繼承到名為 Nursing 的類的 name 和 employmentId 實例變量來打印一個句子。程序運行良好。但是,問題是它需要用戶輸入兩次 name 和 employmentId。AbstractTest.java -import java.util.*;class AbstractTest { String name; int employmentId; AbstractTest (){ //initialize name and employmentId instance variables System.out.println("enter name"); Scanner readString = new Scanner(System.in); this.name = readString.nextLine(); System.out.println("enter ID"); Scanner readInt = new Scanner(System.in); this.employmentId = readInt.nextInt(); } // constructor ends}Nursing.java -class Nursing extends AbstractTest{ void display() { System.out.println("the employment detail: " + "Name: " + name + "ID: " + employmentId); }}Main.java -class Main { public static void main(String[] args) { AbstractTest abstractTest = new AbstractTest(); Nursing nursing = new Nursing(); nursing.display(); }}//它運行良好,但它以某種方式重復(fù)輸入名稱和 ID 兩次。它應(yīng)該只需要一次(下面是 MS DOS 的結(jié)果)。輸入名字 蝙蝠俠輸入 ID 1234輸入名字 超人輸入 ID 5678就業(yè)詳情:姓名:超人ID:5678
3 回答

縹緲止盈
TA貢獻2041條經(jīng)驗 獲得超4個贊
刪除線
AbstractTest abstractTest = new AbstractTest();
盡管您不使用該對象,但它正在創(chuàng)建并且Scanner
正在請求 2 個輸入。
Nursing nursing = new Nursing();
就足夠了:它將調(diào)用其父級的構(gòu)造函數(shù),這是AbstractTest
.

明月笑刀無情
TA貢獻1828條經(jīng)驗 獲得超4個贊
這條線
Nursing nursing = new Nursing();
自動調(diào)用超類的構(gòu)造函數(shù),即AbstractTest()
. 您不必通過創(chuàng)建對象來顯式調(diào)用它AbstractTest
因此,只需刪除行
AbstractTest abstractTest = new AbstractTest();
如果不刪除它,構(gòu)造函數(shù)將運行兩次,因此您也必須提供兩次輸入。

慕仙森
TA貢獻1827條經(jīng)驗 獲得超8個贊
當(dāng)您創(chuàng)建一個Nursing
對象時,它隱式空構(gòu)造調(diào)用super
無參數(shù)構(gòu)造函數(shù)。所以AbstractTest
構(gòu)造函數(shù)被調(diào)用了兩次——一次是在你創(chuàng)建它的對象時,另一次是在你創(chuàng)建一個Nursing
對象時。
使用繼承創(chuàng)建對象有點復(fù)雜,我建議您閱讀它。
添加回答
舉報
0/150
提交
取消