关于构造方法的一些特性:
- 构造方法的功能是在类对象实例化的时候为类中的属性初始化;
- 构造方法方法名与类名一定要相同,无返回值声明,void也不用写;
- 构造方法在用new实例化时被默认调用,有了new就一定会用到构造方法;
- 构造方法可以重载;
- 每个类中至少有一个构造方法,如果你没有提供构造方法,则系统会生成一个什么都不做的无参的构造方法。然而一旦你提供了构造方法,系统将不再提供,这时候你还想要无参构造方法就要自己手动补上。
先创建对象,再对对象的类属性name、age赋值,如此分几步写未免有些麻烦,能不能在new出对象的时候顺便把值给赋了?
public class Student {
// 成员变量
private String name;
private int age;
// 无参数构造方法,要自己写上,因为有了全参构造方法,系统不赠送了
public Student() {
System.out.println("已执行无参构造方法");
}
// 全参数的构造方法
public Student(String name, int age) {
System.out.println("已执行全参构造方法");
this.name = name;
this.age = age;
}
// getter、setter
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 class Demo {
public static void main(String[] args) {
Student stu1 = new Student();
System.out.println("姓名:" + stu1.getName() + ",年龄:" + stu1.getAge());
// 无参数时返回 姓名:null,年龄:0
System.out.println("***********************************");
Student stu2 = new Student("已尽毁", 20);
// 这样做很方便的对成员变量赋值,不需要一次次setXxx
System.out.println("姓名:" + stu2.getName() + ",年龄:" + stu2.getAge());
// 通过类中getter获取成员变量的值
System.out.println("***********************************");
// 上面这样看起来类中的setter没用,参数用全参构造方法一次性赋值了
// 类中还是得有setter方法,可以用来后续修改成员变量,如下:
stu2.setName("已尽辉");
System.out.println("姓名:" + stu2.getName() + ",年龄:" + stu2.getAge());
}
}
/*
结果:
已执行无参构造方法
姓名:null,年龄:0
***********************************
已执行全参构造方法
姓名:已尽毁,年龄:20
***********************************
姓名:已尽辉,年龄:20
*/
标准类是什么?
一个标准类通常有以下特点:
- 所有成员变量用private封装;
- 每个成员变量都有一对getter/setter方法;
- 具有一个无参数构造方法;
- 具有一个全参数构造方法。
这样的标准的类也称为Java Bean。实际上,标准类的代码看似繁多,
。
。
。
没错,是挺多。但可以通过 IntelliJ IDEA 自动生成,快捷键为:Alt+Enter,按住Shift可以批量选择成员变量。