我们在声明一个类的时候,一定会声明它的构造器,即使你不去显示的写出来,它也会自动带的。构造器是我们类的成员之一,也是比较重要的一个成员。那么什么是构造器呢?
我们先来研究一下这行代码:
Person p1 = new Person();
我们具体的看一下这里面每一个单词和字符在这里面的含义:
首先,等号左边,Person p1,就是说定义一个Person类型的对象,对象名为p1,这个简单,跟int i,即定义一个整型变量i意思差不多,就改成定义一个对象。
等号右边,new: 新建对象的意思,新建一个Person类型的对象,那Person后面跟一个括号,是什么意思呢?这不可能是方法,因为Person明显是一个类名嘛。
其实Person()就是调用类的构造器的意思。
具体是什么含义呢?构造器,从字面上理解,就是构造,创建的意思,英文里面叫做constructor,也是创建之类的意思。它就是用来新建对象的。
我们继续根据它的定义方法来进一步展开对它的说明。
我们刚刚说了,它可以不用显示的声明,类自动就可以声明,那如果我们要写出来呢?这就要说到它的书写规范了:
class Person{//定义一个名为Person的类
//定义两个属性
int age;
String name;
//构造器一般写在属性和方法中间
public Person(){
//里面可以写一些输出语句或其他的赋值操作
//构造器里面的程序在构造器被调用时,即新建对象时就会执行
System.out.println("我无处不在!");
}
public Person(int age,String name){//里面可以定义形参,即调用时就可传入参数进行赋值
this.age = age;
this.name = name;
}
//定义几个方法
public void eat(){
System.out.println("吃饭");
}
}
//它具有与类相同的名称
//它不声明返回值类型
//它不能被static、final、abstract、native、synchronized修饰
//不能有return语句返回值
语法格式:
修饰符 类名 (参数列表) {
初始化语句;
}
如同我们规定每个“人”一出生就必须先洗澡,我们就可以在“人”的 构造器中加入完成“洗澡”的程序代码,于是每个“人”一出生就会自 动完成“洗澡”,程序就不必再在每个人刚出生时一个一个地告诉他们 要“洗澡”了。
知道了构造器的作用以及构造器的声明方法,我们就可以更高级的使用构造器来新建对象了。
//接着上面的类来写
public PersonTest{
public static void main(String[] args){
Person p1 = new Person();//普普通通的造一个对象
Person p2 = new Person(13,"zfg");//在创建类的一开始就对类的属性赋值
p1.eat();
}
}
Java语言中,每个类都至少有一个构造器
默认构造器的修饰符与所属类的修饰符一致
一旦显式定义了构造器,则系统不再提供默认构造器
一个类可以创建多个重载的构造器
父类的构造器不可被子类继承