java学习—构造器(构造方法)

java中的构造方法是一种特殊的方法,用于初始化对象。java构造函数在对象创建时被调用。它构造值,即提供对象的数据。

创建java构造函数的规则

构造函数基本上定义了两个规则。分别如下:

  • 构造函数名必须与其类名称相同
  • 构造函数必须没有显式返回类型

Java构造函数类型

有两种类型的构造函数

  • 默认构造函数(无参数构造函数)
  • 参数化构造函数
    1.Java默认构造函数
    没有参数的构造函数称为默认构造函数。默认构造函数的语法如下:
< class_name>(){}

默认构造函数的示例:
在这个例子中,在Bike类中创建了无参数(no-arg)构造函数。它将在对象创建时被调用。

class Bike1{
    Bike1(){
         System.out.println("Bike is created");
    }
     public static void main(String args[]) {
        Bike1 b = new Bike1();
}

默认构造函数的目的是根据类型为对象提供默认值,如:0,null等。
显示默认值的默认构造函数示例

class Student3 {
    int id;
    String name;

    void display() {
        System.out.println(id + " " + name);
    }

    public static void main(String args[]) {
        Student3 s1 = new Student3();
        Student3 s2 = new Student3();
        s1.display();
        s2.display();
    }
}

在上面代码中我们并没有为其提供构造函数,但是我们在输出是会发现其是有值的,这就是在上面的类中,代码中并没有创建任何构造函数,但编译器自动提供了一个默认构造函数。默认构造函数分别为字段:id 和 name 分别提供了0和null值。
2.Java参数化构造函数
参数化构造函数用于为不同对象提供不同初始化的值。
示例:
在构造函数中我们可以添加任意多少的参数。

class Student4 {
    int id;
    String name;

    Student4(int i, String n) {
        id = i;
        name = n;
    }

    void display() {
        System.out.println(id + " " + name);
    }

    public static void main(String args[]) {
        Student4 s1 = new Student4(111, "Karan");
        Student4 s2 = new Student4(222, "Aryan");
        s1.display();
        s2.display();
    }
}

Java构造函数重载

构造方法重载是Java中的一种技术,一个类可以有任何数量的参数列表不同的构造函数。编译器通过构造函数参数列表中的参数数量及其类型来区分这些构造函数。
示例:

class Student5 {
    int id;
    String name;
    int age;

    Student5(int i, String n) {
        id = i;
        name = n;
    }

    Student5(int i, String n, int a) {  //通过参数的不同告知编译器此处用到了构造函数的重载
        id = i;
        name = n;
        age = a;
    }

    void display() {
        System.out.println(id + " " + name + " " + age);
    }

    public static void main(String args[]) {
        Student5 s1 = new Student5(111, "Karan");
        Student5 s2 = new Student5(222, "Aryan", 25);
        s1.display();
        s2.display();
    }
}

java构造函数和方法之间的区别

这里写图片描述

Java拷贝构造函数

在Java中没有复制构造函数。但是可以将一个对象的值复制到另一个中,就像C++中的复制构造函数,在java中有很多方法可以将一个对象的值复制到另一个对象中。它们分别是:

  • 通过构造函数
  • 通过将一个对象的值分配给另一个
  • 通过Object类的clone()方法
  • 在下面的例子中我们将通过Java的构造函数将一个对象的值赋值到另一个对象中。
class Student6 {
    int id;
    String name;

    Student6(int i, String n) {
        id = i;
        name = n;
    }

    Student6(Student6 s) {  //参数传入的是类对象
        id = s.id;
        name = s.name;
    }

    void display() {
        System.out.println(id + " " + name);
    }

    public static void main(String args[]) {
        Student6 s1 = new Student6(111, "Karan");
        Student6 s2 = new Student6(s1);    //将上面的s1传入
        s1.display();
        s2.display();
    }
}

将对象值分配给另一个对象
可以通过将对象值分配给另一个对象,将一个对象的值复制到另一个对象中。 在这种情况下,不需要创建构造函数。

class Student7 {
    int id;
    String name;

    Student7(int i, String n) {
        id = i;
        name = n;
    }

    Student7() {
    }

    void display() {
        System.out.println(id + " " + name);
    }

    public static void main(String args[]) {
        Student7 s1 = new Student7(111, "Karan");
        Student7 s2 = new Student7();
        s2.id = s1.id;  //直接赋值
        s2.name = s1.name;  //同上
        s1.display();
        s2.display();
    }
}

注意:

  • 构造函数返回当前类的实例(不能指定返回值类型,但它会返回一个值)。
  • 在构造函数中我们不仅可以实现赋值,还可以实现比如:对象创建、启动线程、调用方法等。可以像在方法中执行的任何操作一样,在构造函数中也可以做到。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

li_jeremy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值