一个JAVA的简单问题。。高手别笑哦

2024-12-29 19:31:43
推荐回答(3个)
回答1:

我感觉应该有错误吧!
这个是我给你改过的程序:
class A{
String strName;
public A(String x){
strName = x;
}
public void func1(){
System.out.println("func1 of " + strName + " is calling");
}
public void func2(){
A a2 = new A("a2");
this.func1();
a2.func1();
}
}
class TestA{
public static void main(String args[]){
A a1 = new A("a1");
a1.func1();
}
}
因为你在func2中直接就定义A函数的值为a2了,所以说你在main函数中那个a1不管怎么改都是a2的。但是你如果在这里改成引用func1的话就可以得到a1了

回答2:

首先你声明了一个有参的构造函数
public A(String x){
name = x;
}
这句
A a1 = new A("a1");
的意思就是调用你写的那个有参的构造函数并赋值x为a1,那name就变成a1;
但是你又调用这个方法a1.func2();在里面又再次给name赋值为a2.覆盖了前面的值所以无论如何都是a2.
够详细了吧

回答3:

A a2 = new A("a2");
这句就成了a2