我们在前面的文章中,深入了一下类的概念以及对象的创建,赋值等,我们本篇文章来了解一下,java中的构造器,也叫做构造函数。
类中的构造器也称之为构造方法,是在进行创建对象的时候必须调用的。
构造器有两种特点:
1、必须和类的名字相同。
2、必须没有返回值,也不能写void。
对类中构造器的调用。
对构造器要熟练掌握。
1、我们新建一个类,叫做Person类,然后我们什么都不要去写,不要去写属性和方法。
package oop.Demo02;
//人类
public class Person
{
}
2、我们在main方法中,创建Person的对象,将Person实例化。
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Person person = new Person();
}
}
我们可以发现,虽然类里面是空的,但是我们还是可以new出来,并且后边可以看到Person();所以,构造器是存在的。我们来把隐身的构造器写出来。
package oop.Demo02;
//人类
public class Person
{
public Person()
{
}
}
我们可以通过class文件去看一下,因为我们定义的类,是java文件,通过编译以后会生成对于的class文件。
1、我们编译以后,在Idea中会看到一个out文件夹,也就是输出文件夹,结构和咱们写的代码结构是一摸一样的,只不过out里面的文件都是class文件,我们打开刚刚的Person类,就可以发现不一样的地方。
2、所以我们可以得出一些结论:
如果一个类什么都不写,也会存在一个方法(构造方法)。
构造方法,方法名字和类名是一致的。
没有返回值类型,不能写void。
1、可以初始化一些信息。
我们前面了解的创建初始化对象,在这里回顾一下。
Person类
package oop.Demo02;
//人类
public class Person
{
String name;
public Person()
{
}
}
Application类(main方法)
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);
}
}
我们执行输出的结果是默认值null。
null
进程结束.......
所以构造器的作用就是实例化初始值,我们可以换一种方式来理解,比如我们玩的游戏,王者荣耀,英雄联盟,每个英雄都是有初始面板数值的。
我们在构造器中初始化一个姓名。
package oop.Demo02;
//人类
public class Person
{
String name;
public Person()
{
this.name="落满樱花的羊";
}
}
我们再来输出一下main方法,就可以看到,结果变为了我们赋值的结果。
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Person person = new Person();//通过Debug可以进入到这个方法,走这个方法的内容。
System.out.println(person.name);//落满樱花的羊
}
}
2、构造器核心作用,使用new关键字,必须要有构造器,new的时候,本质是在调用构造器。
3、构造器分为有参构造和无参构造。
package oop.Demo02;
//人类
public class Person
{
String name;
public Person()//无参数构造器
{
this.name="落满樱花的羊";
}
public Person(String name)//有参构造器
{
this.name=name;//前面的name是属性,后边的name是方法传递的形参。
}
}
注意:
package oop.Demo02;
//人类
public class Person
{
String name;
public Person()//无参数构造器,一旦定义了有参构造,无参必须写出来
{
}
public Person(String name)//有参构造器
{
this.name=name;
}
}
package oop.Demo02;
public class Application {
public static void main(String[] args) {
Person person = new Person("落满樱花的羊");
System.out.println(person.name);
}
}
这样输出的结果就是走的有参构造器,输出的结果就是我们传递的值。
落满樱花的羊
进程结束......
Idea快捷键小妙招
我们可以用 alt + ins 可以直接调出构造器生成页面,可以根据选择参数或者不选择,去创建有参构造和无参构造。
有参可以重载很多个。
package oop.Demo02;
//人类
public class Person
{
String name;
int age;
public Person()//无参数构造器,一旦定义了有参构造,无参必须写出来
{
}
public Person(String name)//有参构造器
{
this.name=name;
}
public Person(String name,int age)//有参构造器
{
this.name=name;
this.age=age;
}
}
构造器:
1、方法名和类名相同。
2、没有返回值。
构造器的作用:
1、new本质是调用构造器。
2、初始化对象的值。
3、定义有参构造,想使用无参,就要定义一个无参的构造。