由来
我们发现我们new完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻烦了。我们能不能在new对象时,直接为当前对象的某个或所有成员变量直接赋值呢。可以,Java给我们提供了构造器。
构造器的作用
- 在创建对象的时候为实例变量赋初始值。 构造器只为实例变量初始化,不为静态类变量初始化
构造器的语法格式
构造器又称为构造方法,那是因为它长的很像方法。但是和方法还有有所区别的。
示例代码
public class Student {
private String name;
private int age;
// 无参构造
public Student() {
}
// 有参构造
public Student(String name, int age) {
this.name = name;
this.age = age;
}
//类中的其他代码
}
注意事项:
- 构造器名必须与它所在的类名必须相同。
- 它没有返回值,所以不需要返回值类型,甚至不需要void
- 如果你不提供构造器,系统会给出无参数构造器,并且该构造器的修饰符默认与类的修饰符相同
- 如果你提供了构造器,系统将不再提供无参数构造器,除非你自己定义。
- 构造器是可以重载的,既可以定义参数,也可以不定义参数。
- 构造器的修饰符只能是权限修饰符,不能被其他任何修饰
标准JavaBean
JavaBean是 Java语言编写类的一种标准规范。符合JavaBean 的类,要求:
- 类必须是具体的和公共的,
- 并且具有无参数的构造方法,
- 成员变量私有化,并提供用来操作成员变量的set 和get方法。
- 其他要求...
格式:
public class ClassName{
//私有化成员变量
//无参构造方法【必须】
//有参构造方法【建议】
//getXxx()
//setXxx()
//其他成员方法
}
代码示例
public class Student {
// 成员变量
private String name;
private int age;
// 构造方法
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
// get/set成员方法
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
//其他成员方法列表
public String getInfo() {
return "姓名:" + name + ",年龄:" + age;
}
}
测试类,代码如下:
public class Test {
public static void main(String[] args) {
// 无参构造使用
Student s = new Student();
s.setName("张三");
s.setAge(18);
System.out.println(s.getName() + "---" + s.getAge());
System.out.println(s.getInfo());
// 带参构造使用
Student s2 = new Student("李四", 118);
System.out.println(s2.getName() + "---" + s2.getAge());
System.out.println(s2.getInfo());
}
}