什么是构造器?

简介: 什么是构造器?

我们在声明一个类的时候,一定会声明它的构造器,即使你不去显示的写出来,它也会自动带的。构造器是我们类的成员之一,也是比较重要的一个成员。那么什么是构造器呢?

我们先来研究一下这行代码:

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构造器需要注意这些地方:

Java语言中,每个类都至少有一个构造器

默认构造器的修饰符与所属类的修饰符一致

一旦显式定义了构造器,则系统不再提供默认构造器
一个类可以创建多个重载的构造器

父类的构造器不可被子类继承

相关文章
|
6月前
构造器(有参、无参)
构造器(有参、无参)
|
6月前
类的无参方法
类的无参方法
|
Java
构造方法
构造方法
51 0
|
编译器
匿名对象与构造器
匿名对象与构造器
70 0
为什么子类会调用父类无参的构造函数
为什么子类会调用父类无参的构造函数
|
编译器 数据安全/隐私保护
构造器及重载
构造器及重载
85 0
|
Java 程序员 C#
用静态工厂方法代替构造器
用静态工厂方法代替构造器
79 0
|
Java C++
C++类中在构造器中调用本类的另外构造器
C++类中在构造器中调用本类的另外构造器
98 0
|
Java C#
C# 构造方法
应用场景:1. 初始化(加载)对象 2. 初始化(加载)一些数据 特点:默认有一个无参构造方法
87 0
|
Android开发
构造函数与初始化块
构造函数与初始化块
155 0