我想根据用户输入选择特定的子类,但我不太确定如何执行此操作。例如:根据用户输入选择子类?
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