public class Moju {
  public String a="方形的"; public String Moju() {
String b="模具造好了,张老板,你可以拿去用了";  Moju zhangsan=new Moju();
    System.out.print(b);
return b;
}  public void Xiezi() {   System.out.print("中秋月圆");  }
public static void main(String[] agr) {
 Moju mj=new Moju();
mj.Xiezi();
mj.Moju();
}}

解决方案 »

  1.   

    帮我看一下啊, 我想知道调用自身new构造方法, 都可以放在哪里啊?public class Moju {
     Moju mj=new Moju();
     Moju mj1=this;
     
      public void Function1() {   System.out.print("方法一的");
    }public void Function2() {
       mj.Function1();
       mj1.Function1();} public static void main(String[] agr) {
       Muju mj2=new Muju();
    mj2.Function2();
    }
    }
      

  2.   

    没看代码,但我知道,哪里都可以放,只要你的构造方法是Public的
      

  3.   

    构造方法是public,但是是一个循环错误啊!!!输出这个东西: at Moju.<init>(Moju.java:7)
     at Moju.<init>(Moju.java:7)
           .
           .
    代码是:
    public class Moju {
      public String a="方形的";
     Moju mj=new Moju();
     public Moju() {
    String b="模具造好了,张老板,你可以拿去用了";  Moju zhangsan=new Moju();
      System.out.print(b);}  public void Xiezi() {  System.out.print("中秋月圆");  }
    public static void main(String[] agr) {
     Moju mj1=new Moju();
    mj1.Xiezi();}} 
     
      

  4.   

    不能放在自己的构造方法里面,因为如果放在自己的构造方法里面,会造成死循环,即会不停的自己调用自己的构造函数,直到内存耗尽 ;public Moju() {                       <-----------------------------
       String b="模具造好了,张老板,你可以拿去用了";                       |
                                                                        |
      Moju zhangsan=new Moju(); //-这一句 接着又调用-----------------------(会不停的调用自己,形成一个死循环,后面的代码永远得不到执行,即永远不能退出构造方法,除非系统崩毁,内存耗尽)
      System.out.print(b);}
      

  5.   

    我现在就想知道, 在创建一个类A时, 在创建类过程可以不可以调用自身,并实例一个对象, 如果不可以那this是属于,创建类A时, 自己调用自己类,并创建一个实例吗?
      

  6.   

    本帖最后由 AWUSOFT 于 2011-07-01 08:59:06 编辑
      

  7.   

    我觉得this,是实现了调用当前类,并且实现自己。
    在下列函数中,只是创建了一个类的instance,并且实现自身
    A a = new A(),
    a.getxxx()在创建一个类A时, 在创建类过程可以不可以调用自身,并实例一个对象。具体指什么???
      

  8.   

    class A {
      public A() {
        // 这里面不能再写 new A()
        // 这样会造成不断嵌套直至内存溢出
      }
    }我还是不明白你的意思你是不是指:构造函数中,就需要对自己这个实例进行一些操作你可以使用this关键字,this表示当前类实例,直接使用就可以了
      

  9.   

    class A {
       A a=new A();
       A b=this;
       A c=new A();
       A d=new B();// B是A的子类
       接口 e=new A();
    String f="一些字符串";
    String g="许多字符串";  public A() { A的系统构造函数,系统在new时,将自动调用这里 ,System.out.print("在new时,系统自动调用")} 其他方法 Function1() {
         这里可以放new A()吗? 或new B()吗,或者可以调用一开始创建的对象变量吗?
    } 其他方法 Function1() {
        这里可以调用构造函数吗? this.A(); ?
    }public static void main(String[] str) {
          A x=new A();
        x.a.Function1();
        x.b.Function1();   这样子能调用吗?
        x.c.Function1();
        x.d.Function1();
    }}
      

  10.   

    【我没试验过,只从我知道的理论上说明,请自行实际试验,说错也请高手指正】  A a=new A();
      A b=this;
      A c=new A();
      A d=new B();// B是A的子类
      接口 e=new A();第一句,可以
    第二句,不行,这些成员变量的初始化语句都是在构造函数之前进行的,那时根本没有实例这个概念,不能使用this
    第三句,可以
    第四句,可以
    第五句,A没有实现某个接口,所以,这句话是错误的
    如果A implements IA, 然后 IA e = new A(); 应该是正确的-------------------------------------------------------------- 其他方法 Function1() {
      这里可以放new A()吗? 或new B()吗,或者可以调用一开始创建的对象变量吗?
    }可以,这里创建的新的A实例和普通临时变量没有区别,调用自身的成员变量也没有问题
    --------------------------------------------------------------其他方法 Function1() {
      这里可以调用构造函数吗? this.A(); ?
    }不可以,A()构造函数只在某个实例初始化时调用,其余时刻不能被调用
    即,构造函数不是类的一个方法,不可以像这样用 a.A()--------------------------------------------------------------public static void main(String[] str) {
      A x=new A();
      x.a.Function1();
      x.b.Function1(); 这样子能调用吗?
      x.c.Function1();
      x.d.Function1();
    }首先说明一点,你类A中所有的a b c d 成员变量都是没有加上修饰符[private, protected, public],默认都是private,即外部不可以访问到,所以你的4句话都是错的
    其次,我上面说的错误的语句,这里都不能调用
    第三,Function1()同样需要显式的加上public 才可以在外部直接调用--------------------------------------------------------------LZ,你的所有问题,只要使用任意一款IDE,都可以全部解决,我相信,所有的IDE都会给出提示,解决所有的编译错误建议使用IDE写代码(一些老鸟可能说新学最好能用记事本,我持反对意见)
    推荐eclipse,免费。
      

  11.   

    我明白了一些,自己试的,JAVA中只要遇到new的时候,就要先查找这个类, 然后看看这个类有没有继承父类,如果有则进入父类,直到顶层, 进入顶层父类,进行扫描看类内部有没有new操作,如果有的话,则再进入这个new的类中,操作与上面一样, 如果没有new 操作,则执行构造函数,如果在构造函数中有new的话, 一样方法处理。 反正先是检查new的类, 最后执行类的构造函数, main()方法中的new 除外, 
      

  12.   

    依照这个的方式,所以在 类A中 创建A的实例, 则程序将会跳到类A的开头部分向下执行, 又会遇到
    new A()操作, 所以程序又回到类的开头, 这样就会形成循环, 整个流程是这样子造成了错误的。
      

  13.   

    但是在,在A类中创建, A类的变量,是可以的, 如: A a=null;
      

  14.   

    应该只要你的类不是静态的,不是私有的,在自己类的范围那都可以new吧!