黑马程序员技术交流社区
标题:
这是什么情况啊。
[打印本页]
作者:
黄昆
时间:
2012-6-23 10:46
标题:
这是什么情况啊。
本帖最后由 hkylp 于 2012-7-1 09:09 编辑
定义了一个类User
package com.do;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
private String username;
private String passWord;
private String id;
private String email;
private Date borthday;
User(){}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBorthday() {
return borthday;
}
public void setBorthday(Date borthday) {
this.borthday = borthday;
}
}
复制代码
然后在另外一个包中要创建一个User 对象为什么不能编译通过呢。。。提示要给User的构造方法加Public 附上代码。。 求解啊。
package com.use
import com.do.*;
public class Demo{
public static void main(String[] args){
User user = new User();//为什么编译不能通过??
}
}
复制代码
然后我把 User 的构造方法给删除了 让系统给他加一个构造方法 竟然能编译通过。 这是什么原因啊??求解释。。
作者:
黄连兵
时间:
2012-6-23 11:21
你自定义的User(){};构造函数里面什么都没有写,没有给对象进行相应的初始化。也就是说创建这个User类对象的时候,什么东西都没有拿到。
你删除后User(){};系统对新创建的对象进行各个参数默认初始化。
作者:
薄炳鑫
时间:
2012-6-23 12:00
java中构造器的执行过程是这样的:
1.分配对象空间,并将对象中的成员初始化为空或者0。
2.执行属性值显示初始化。
3.执行构造器。
4.将变量关联到堆中的对象上。
而你这个空的构造器,将会是构造器执行的第一步都不能满足,所以会报错。
当你删除这个构造器后,系统将会调用他的默认构造器对对象进行初始化,所以能够编译通过。
作者:
qq3356441
时间:
2012-6-23 12:07
`访问权限的问题,在这里面只能访问比自己高或平级的权限,主方法的权限是public class Demo{}//最大权限。
而你给出的是User(){},默认就是default权限所以会失败。
作者:
黄昆
时间:
2012-6-23 15:40
qq3356441 发表于 2012-6-23 12:07
`访问权限的问题,在这里面只能访问比自己高或平级的权限,主方法的权限是public class Demo{}//最大权限。 ...
额,看了这么多久这个有道理。
作者:
oracleserver
时间:
2012-6-24 22:34
本帖最后由 oracleserver 于 2012-6-24 22:35 编辑
java与C#相似,在没有定义构造方法的时候都有个默认的构造方法即:class A{},
如果在javaBean中定义了构造方法,在使用javaBean创建对象的时候就必须要把构造方法的参数带进去。一般写的时候我们会写两个构造方法,一个无参数的,即:calss A{},另外一个就看你的需求来定了。class A(String heima){this.heima=heima}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2