在示例代码中,Person()即为Person类的构造函数。当定义一个类的时候,即使没有显式的写出构造函数,程序也会默认加载构造函数。
构造函数的作用就是初始化对象。当上述代码中没有构造函数的时候,创建对象并打印,只会显示变量在创建时的初始化值:“null 0”。
而当我们想在创建对象时,就让对象具备一定的值,这时就要用到构造函数。注意,如果Person()中为空,就是所谓的默认构造函数。
上面代码运行的结果就是在控制台打印:“baby 0”。
由此可以看出构造函数的特点:函数名与类名相同;不需要定义返回值类型;没有具体的返回值。
构造函数与普通函数的区别在于:构造函数随着对象的创建而运行,对对象进行初始化。并且每个对象只能调用构造函数一次;
而普通函数只有在对象调用它时,才会被执行。并且每个对象可以调用普通函数多次。
当创建一个对象时就希望它已经被赋值,这时就可以重载构造函数。
Person p = new Person("张三",20);
此时调用的构造函数就是:Person(String name, int age)。
这就意味着,新建对象时可以根据传入的参数不同而调用不同的构造函数。
在上述代码中,age是用private修饰的。那么则意味着age是不能直接被Person类之外的变量所访问的。所以要在类中另外定义函数接口,以调用age变量。
public void setAge(int age)
{
this.age = age;
}
在函数体中“this.age = age;”第一个“this.age”指的是用Person类创建的对象调用的age;第二个“age”指的是参数传入的age。
通俗的说,哪个对象调用了this所在的函数,this就代表哪个对象。
Person p = new Person("张三",20);此时,this就代表的是P。