我需要询问用户他想要绘制的图形有多少面,然后调用正确的构造函数来实例化该对象。
下面是我尝试使用 IF 语句(或者我本可以使用开关)来解决答案的尝试,但我不知道这是否是最好的方法,可能是使用 Java 继承和多态性。
所有类都扩展了 Figure 类。
类图:
--------------- Figure ---------------
^ ^ ^ ^
| | | |
| | | |
Circle Triangle Rectangle Exagone
主要类:
import java.util.Scanner;
class Draw {
static void main(String[] args){
Scanner userInput = new Scanner(System.in);
int num_sides;
//user input
System.out.println("How many sides has the figure you want to draw?");
num_sides = userInput.nextInt();
//---> deciding what constructor to call with if statements
if(num_sides == 0){
Figure f1 = new Circle();
}
else if(num_sides == 3){
Figure f1 = new Triangle();
}
//...
else{
System.out.println("Error. Invalid sides number");
}
}
}
类(class)代码:
class Figure{
private int sides;
public Figure(int num_sides){
sides = num_sides;
}
}
class Circle extends Figure{
public Circle(){
super(0);
}
}
//... all the other classes has the same structure of Circle
最佳答案
工厂方法
您是否考虑过 Factory Method Pattern ?基本上,您有一个类似这样的方法:
public Figure createInstance(int numSides) {
Figure figure = null;
switch(numSides) {
case 0:
figure = new Circle();
break;
case 3:
// etc...
// Make a case for each valid number of sides
// Don't forget to put a "break;" after each case!
default:
// Not a valid shape; print your error message
}
return figure;
}
然后让那个工厂方法来做决定。
关于java - 根据用户输入决定调用什么构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34519878/