public Machine newObject(String stat)
{
return new StateMachine(stat);
}
public StateMachine newObject(String state)
{
s = new StateMachine(state);
return s;
}
.........应该是编译不通过把,方法重载必须是参数个数或者参数类型(顺序)不同才可以。你的newObject
参数类型个数完全相同,无法编译
{
return new StateMachine(stat);
}
public StateMachine newObject(String state)
{
s = new StateMachine(state);
return s;
}
.........应该是编译不通过把,方法重载必须是参数个数或者参数类型(顺序)不同才可以。你的newObject
参数类型个数完全相同,无法编译
{
public StateMachineTester()
{
super();
} public Machine newObject(String stat)
{
return new StateMachine(stat);
}
public StateMachine newObject(String state)
{
s = new StateMachine(state);
return s;
}
.........
}
---------------------------------------
改为
public class StateMachineTester extends TestCase
{
public StateMachineTester()
{
super();
} public Machine getMachine(String stat)
{
return new StateMachine(stat);
}
public StateMachine getStateMachine(String state)
{
s = new StateMachine(state);
return s;
}
.........
}
Machine(String state){}
StateMachine (String state){
super(state);
}
同意bluesmile979(笑着) 的改法,不过按照楼主意思,那是不是要在public abstract class TestCase中对应加入2个方法的?
public abstract Machine getMachine(String state);
public abstract StateMachine getStateMachine(String state);
我觉得如果你专门写个TestCase,可以独立出来,在生成Machine和StateMachine 时都不需要改变TestCase,是需要改变StateMachineTester即可。/************************ Machine.java ***************************/
public interface Machine
{
public void setState(String state);
public String getState();
}/************************ StateMachine.java ***************************/
public class StateMachine implements Machine{
private String state;
public StateMachine()
{
} public StateMachine(String state)
{
} public void setState(String state)
{
this.state = state;
}
public String getState()
{
return state;
}
}/************************ TestCase.java ***************************/
public abstract class TestCase
{
public TestCase(){}
public abstract StateMachine newObject(String state);
}/******************** StateMachineTester.java ***********************/
public class StateMachineTester extends TestCase
{
public StateMachineTester()
{
super();
} public Machine getMachine(String state)
{
return newObject(state);
}
public StateMachine newObject(String state)
{
return new StateMachine(state);
}
public static void main(String arg[]){
StateMachineTester smt = new StateMachineTester();
Machine m = smt.getMachine("Machine");
StateMachine sm = smt.newObject("StateMachine");
}
}