问题出在myClass frame = new myClass(k);
你应该使用myClass frame = new myClass();
因为类myClass没有没有一个带参数的构造方法,上面的public void myClass(int i)只是一个普通的方法,编译器只是自动生成了一个缺省构造方法,它是无参的。

解决方案 »

  1.   

    构造方法返回的必然是myClass类型,所以不能再定义其他类型比如:
    myClass test = new myClass(2);
    test就是myClass类型
      

  2.   

    cherami(cherami):
    为什么他不是一个构造方法呢?就因为有了void吗?
      

  3.   

    cherami的解释是对的,如果你的本意要把public void myClass(int i)作为构造器,那么老农的话点中了要害。应该是
     public myClass(int i)否则要么重新创建一个构造器,类似 public myClass(int p)
    要么向cherami说的改myClass frame = new myClass(k);为myClass frame = new myClass();
      

  4.   

    我试验了一下,果然myClass(int k)成了一个普通的方法,我还是不明百为什么??哪位老哥知道?
      

  5.   

    cherami说得对,构造函数不可以有返回类型。如果定义时加了返回类型,编译器会认为这是一个普通的方法,然后提供一个不带参数的默认的构造函数。这时对类实例化时加参数就会出错!
      

  6.   

    The constructor is an unusual type of method because it has no return value. This is distinctly different from a void return value, in which the method returns nothing but you still have the option to make it return something else. Constructors return nothing and you don’t have an option. 以上字段出自<thinking in Java 2/e>