我想根據用戶輸入選擇特定的子類,但我不太確定如何執行此操作。例如:根據用戶輸入選擇子類?
System.out.println("Select animal:\n1. Cat\n2. Dog");
int input = keyboard.nextInt();
if(input == 1){
Cat newPet = new Cat();
}
else{
Dog newPet = new Dog();
}
這只是我剛剛創建的一個快速示例,所以請原諒任何語法錯誤。我明白,一旦if語句結束,newPet
對象超出範圍,因此不能再使用。我也嘗試了一些案例,但這是行不通的,因爲我宣稱newPet
兩次,儘管在程序的每次運行中只能訪問一個。
根據用戶輸入的不同,程序中更多的不同因素會受到影響。我總是可以在每個不同的因素中使用if語句,但是想知道是否有更乾淨的方法來做到這一點?
另請注意,如果'Cat'和'Dog'不共享一個通用的超類/接口,則可以將'pet'聲明爲Object,但創建一個通用接口更清晰。 –
@Gaël:在這種情況下,它會調用我們需要的任何方法來形式化它,但這種方法可能有效,但它不會更清潔。 –
我寧願在這個場景中使用一個抽象類'Animal',而不是一個接口。 :)但是我知道你的意思,因爲它可能是多態性最常見的例子。 – LordAnomander