构造器
什么是构造器
构造器又叫构造方法,是类的一种特殊方法,他的主要作用是完成对新对象的初始化。
例如:一台新手机被工厂制造好,此时这个手机什么都没有,系统没有,连壁纸都没有。这时厂商会对他进行初始化,装系统,设置出厂设置。
同理,构造器就是对已经创建好的对象进行一个初始化
构造器的特点
- 构造方法的结构
修饰符 方法名(形参列表){方法体} - 方法名和类名相同
- 没有返回值
- 在创建对象时,系统会自动调用该类的构造器完成对象初始化
- 当程序员没有定义构造器时,系统会自动给类生成一个默认无参构造方法,这也是为什么之前创建对象都要加();的原因
- 一旦定义了自己的构造器,那么默认的构造方法就会被覆盖。如果还想调用默认无参构造器,就必须自己再写出来。
构造器入门
问题:要求在创建人类时,就直接指定这个对象的年龄和姓名,而不是创建对象后再赋值
在前面的对象创建中语句是这样的 T t = new T();这里的();就是调用构造方法
完成这个问题有两种方法:
第一种 - 直接在构造方法中调用属性(全局变量),进行赋值
public Person(){
name = "jack";
age = 16;
}
但是这样的话就固定死了这个类的初始化,后续要创建多个同类对象不方便。所以我们用第二种方法,由于构造方法也是一个特殊的方法,所以可以利用传参机制来进行灵活初始化
class Person{
String name;
int age;
public Person(String pname,int page){
name = pname;
age = age;
}
}
这样就可以在创建对象时自定义每个对象的初始化了
演示
public class constructor{
public static void main(String[] args) {
Person p1 = new Person("张三",45);
Person p2 = new Person("赵四",35);
System.out.println(p1.name);
System.out.println(p2.name);
}
}
class Person{
String name;
int age;
public Person(String pname,int page){
name = pname;
age = age;
}
}
输出结果:
张三
赵四
- 假设要只定义一个年龄,也可以重载构造器,将形参列表修改即可
构造器练习
在Person类中定义两个构造器
第一个无参构造器:设置所有人的age属性初始值为18
第二个有参构造器,使得每次创建此类对象时,可以自定义设置name和age属性
分别使用不同的构造器,创建对象
思路: 重载构造方法,一个无参构造,直接调用属性初始化。一个有参构造,调用属性将形参赋值给属性
public class constructor{
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person("赵四",35);
System.out.println(p1.name+p1.age);
System.out.println(p2.name+p2.age);
}
}
class Person{
String name;
int age;
public Person(){//第一个无参构造
age = 18;
}
public Person(String pname,int page){//第二个重载构造
name = pname;
age = age;
}
}
输出结果
null 18
赵四 35