关于java构造器的详解

发布时间:2024年01月15日

关于java构造器的详解

我们在前面的文章中,深入了一下类的概念以及对象的创建,赋值等,我们本篇文章来了解一下,java中的构造器,也叫做构造函数😀。

1、构造器

  • 类中的构造器也称之为构造方法,是在进行创建对象的时候必须调用的。

  • 构造器有两种特点:

    1、必须和类的名字相同。

    2、必须没有返回值,也不能写void。

  • 对类中构造器的调用。

  • 对构造器要熟练掌握。

2、构造器初识

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()
    {
    
    }
}

3、构造器原理

我们可以通过class文件去看一下,因为我们定义的类,是java文件,通过编译以后会生成对于的class文件。

1、我们编译以后,在Idea中会看到一个out文件夹,也就是输出文件夹,结构和咱们写的代码结构是一摸一样的,只不过out里面的文件都是class文件,我们打开刚刚的Person类,就可以发现不一样的地方。

在这里插入图片描述

2、所以我们可以得出一些结论:

  • 如果一个类什么都不写,也会存在一个方法(构造方法)。

  • 构造方法,方法名字和类名是一致的。

  • 没有返回值类型,不能写void。

4、构造器的作用

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;
    }
}
  • 我们如果不传参数,就走正常的构造方法,输出的是null,如果new的时候,传递参数,就会走有参构造方法。
  • 有点类似方法的重载,根据不用的内容去找不用的方法😉。
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;
    }
}

5、总结

  • 构造器:

    1、方法名和类名相同。

    2、没有返回值。

  • 构造器的作用:

    1、new本质是调用构造器。

    2、初始化对象的值。

    3、定义有参构造,想使用无参,就要定义一个无参的构造。

文章来源:https://blog.csdn.net/SpringYang11/article/details/135598474
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。