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();
}}
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();
}}
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();
}
}
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();}}
String b="模具造好了,张老板,你可以拿去用了"; |
|
Moju zhangsan=new Moju(); //-这一句 接着又调用-----------------------(会不停的调用自己,形成一个死循环,后面的代码永远得不到执行,即永远不能退出构造方法,除非系统崩毁,内存耗尽)
System.out.print(b);}
在下列函数中,只是创建了一个类的instance,并且实现自身
A a = new A(),
a.getxxx()在创建一个类A时, 在创建类过程可以不可以调用自身,并实例一个对象。具体指什么???
public A() {
// 这里面不能再写 new A()
// 这样会造成不断嵌套直至内存溢出
}
}我还是不明白你的意思你是不是指:构造函数中,就需要对自己这个实例进行一些操作你可以使用this关键字,this表示当前类实例,直接使用就可以了
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();
}}
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,免费。
new A()操作, 所以程序又回到类的开头, 这样就会形成循环, 整个流程是这样子造成了错误的。