java构造器问题
来源:百度知道 编辑:UC知道 时间:2024/09/22 08:28:57
如下一段代码
public class Test_1 {
int a = 1;
int b = 2;
void Test_1() {
a = 3;
b = 4;
}
public static void main(String[] args) {
Test_1 app = new Test_1();
System.out.println(app.a + "," + app.b);
}
}
最后的输出a是1,b是2
为什么不是3,4??
求详解
public class Test_1 {
int a = 1;
int b = 2;
void Test_1() {
a = 3;
b = 4;
}
public static void main(String[] args) {
Test_1 app = new Test_1();
System.out.println(app.a + "," + app.b);
}
}
最后的输出a是1,b是2
为什么不是3,4??
求详解
构造函数不能有返回值,你的void Test_1() 不是构造函数,只是一个碰巧和类名相同的方法。
把void去掉你再试试
楼上说的对,你那个不是构造器,因为有返回值类型,是一个陷阱,普通方法允许和构造方法重名,但是不符和java编码规范
构造方法没有返回值,而且不能是 VOID,把void Test_1()换成public Test_1()就OK了、
void Test_1() {
a = 3;
b = 4;
}
这只是一个普通的方法,不是类的构造方法
构造方法没有返回类型,如
Test_1() {
a = 3;
b = 4;
}
Test_1 app = new Test_1(); 当程序运行这行代码的时候会自动调用类的无参数构造方法即Test_1(){}
而类中并没有写这个无参数的构造方法,那JAVA虚拟机会创建一个无参构造方法并调用.
而在该程序中并没有调用void Test_1() {
a = 3;
b = 4;
}
所以a和b的值并没有被改变