java的构造器详解

构造器详解

1.什么是构造器

  • 类中的构造器也称构造方法,是在进行创建对象的时候必须要调用的,并且构造器有以下两个特点。
    • 必须和类的名字相同
    • 必须没有返回类型,也不能写void。
  1. 我们同样建立两个文档一个命名person ,另一个命名application.

我们简单创建一个类

public class person {

}

另一个文件使用new来调用这个person。

public class application {
    public static void main(String[] args) {
//使用new关键字实例化了一个对象。
        person person = new person();
    }
}

然后运行第二个文件,发现仍然可以正常运行,但我们之前学的是在第一个文件person中,必须有一个方法才能在另一个文件中new,然而我写的第一个文件里面,没有写方法,也就是说在这个person类中有一个隐藏的方法。

  1. 那我们打开这个person的class文件,就会发现这个class文件的代码就是这个样子的。
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

public class person {
    public person() {      //我们在原文件中并没有写这个方法,但是在class里面有这个东西
                           //该方法没有返回值。
    }
}

也就是说一个类即使什么也不写,他也会存在一个方法(构造方法//构造器),这个方法就是构造方法。

可以看出构造器的两个特点:1.必须和类的名字相同 2.必须没有返回类型,也不能写void.

2.写一个构造器

刚才咱们的构造器是默认生成的,咱们可以显示的定义构造器.

ublic class person {
public person(){
    //与类名相同,并且没有返回值,也没有写void.无参构造,没有参数的构造器.
  }
}

3.无参构造器能干什么

  1. 构造器可以实例化一些初始值.例如下图
public class person {
String name;
public person(){

   }
}
public class application {
    public static void main(String[] args) {
//使用new关键字实例化了一个对象。
        person person = new person();
        System.out.println(person.name);

    }
}
===============================================
    输出结果如下:
null

他的第一个作用就是实例化一些初始值.

如果我把第一个文件里面改一下.

public class person {
String name;
public person(){
this.name="gao"
   }
}
===========================
    那么在运行第二个文件的时候,他的结果就是:
   gao
  1. 使用new关键字,本质就是在调用构造器.

4.有参构造和无参构造

  • 无参构造和有参构造如下
public class person {
String name;
//无参构造
public person(){
this.name="gao";
}
//有参构造
    public person(String name){
    this.name=name;
    }
}

  1. 有参构造:一旦有了有参构造的时候,无参构造必须显示定义.咱们运行一下子.
public class person {
String name;
//此时的无参构造没有显示定义.
//有参构造
    public person(String name){
    this.name=name;
    }
}

public class application {
    public static void main(String[] args) {
//使用new关键字实例化了一个对象。
        person person = new person();//运行后,他会在这报错.
        System.out.println(person.name);

    }
}

他报错的内容是无法将类(文件的地址)中的构造器person应用到指定类型.

也就是说.你还想继续运行这个程序的话,你必须在类person中显示定义无参构造,代码如下即可.

public class person {
String name;
//无参构造
public person(){
this.name="gao";
}
//有参构造
    public person(String name){  //String name中的name是形参.需要一个实参传递给他一个东西.
    this.name=name;
    }
}
  1. 咱们若想让主程序走类person中的有参构造,在new person();的括号中添加: “内容” 即可,代码如下
public class application {
    public static void main(String[] args) {
//使用new关键字实例化了一个对象。
        person 内容 = new person("内容"); //这样他就会走有参构造的方法.
        System.out.println(person.name);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GaoJa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值