构造器(constructor)构造器重载属性赋值的顺序扩展:JavaBean
构造器(constructor)构造器(也叫构造方法)作为类的成员之一,在面向对象的开发过程中,起着重要的作用。Java构造方法是类的一种特殊方法,主要用来在创建和初始化一个类的新对象,简化了对象初始化的代码,总与new运算符一起使用。
class test{
public static void main(String[] args){
Person p1 = new Person(); // new后面跟的就是构造器
// 在创建一个对象时,对其属性进行了初始化
}
}
class Person{
int age;
double height;
public Person(){
age = 20;
height = 175.5;
}
}
构造器的作用主要有:
- 创建对象初始化对象信息
说明:
- 如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器定义构造器的格式:权限修饰符 类名(形参列表){}一旦我们显式的定义了类的构造器之后,系统就不再提供默认的空参构造器一个类中,至少有一个构造器。构造器没有返回值
举例:
class Person{
int age;
double height;
public Person(){
age = 20;
height = 175.5;
}
}
在上面的代码中,我们显式地创建了一个构造器,并对类的相对属性进行了初始化赋值。
构造器重载和前面方法的重载类似,一个类中可以创建多个构造器,从而彼此之间形成重载。
举例
class Person{
int age;
double height;
public Person(){
age = 20;
height = 175.5;
}
public Person(int a, double h){
age = a;
height = h;
}
public Person(int a){
age = a;
height = 180.0;
}
}
在上面代码中,共创建了三个构造器,由于构造器的形参列表不同,因此这三个构造器构成重载。
属性赋值的顺序在前文已经提到,通过构造器,我们可以对属性进行初始化。截止到目前,对属性进行初始化的位置主要有:
①默认初始化②显式初始化③构造器中初始化④通过“对象.属性”或“对象.方法”进行初始化
其赋值先后顺序为:①——>②——>③——>④
验证:
class test{
public static void main(String[] args){
Person p1 = new Person();
System.out.println(p1.age); // 此时输出0,为默认初始化
}
}
class Person{
int age;
}
class test{
public static void main(String[] args){
Person p1 = new Person();
System.out.println(p1.age); // 此时输出1,为显式初始化
}
}
class Person{
int age = 1;
}
通过上述两段代码,可以看到①——>②
class test{
public static void main(String[] args){
Person p1 = new Person(5);
System.out.println(p1.age); // 此时输出5,为构造器初始化
}
}
class Person{
int age = 1;
public Person(int a) {
age = a;
}
}
所以②——>③
class test{
public static void main(String[] args){
Person p1 = new Person();
p1.setAge(10);
System.out.println(p1.age); // 此时输出10,通过“对象.方法”初始化
}
}
class Person{
int age = 1;
public Person() {
age = 5;
}
public void setAge(int a) {
age = a;
}
}
所以③——>④
扩展:JavaBeanJavaBean是一种Java语言写成的可重用组件。所谓JavaBean,是指符合如下标准的Java类:
类是公共的(public)有一个无参的公共的构造器有属性,且有对应的get、set方法
举例
// 类是公共的
class Person{
// 有属性
private int age = 1;
private String name;
private double height;
//有一个无参的公共的构造器
public Person() {
}
// 有对应的get、set方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}



