public Machine newObject(String stat)
    {
return new StateMachine(stat); 
     }

     public StateMachine newObject(String state)
     {
s = new StateMachine(state);
return s;
     }
     .........应该是编译不通过把,方法重载必须是参数个数或者参数类型(顺序)不同才可以。你的newObject
参数类型个数完全相同,无法编译

解决方案 »

  1.   

    public class StateMachineTester extends TestCase
    {
        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;
         }
         .........
    }
      

  2.   

    在public interface Machine和public class StateMachine implements Machine中增加带参数的consturctor
    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);
      

  3.   

    我这样改了,试过,没有问题
    我觉得如果你专门写个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");
    }
    }
      

  4.   

    漏写代参数的构造函数是我的笔误,实际上关键是两个newObject的方法的问题,原文中应该是错误无疑,只是怎么改的问题。多谢大家帮忙