教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Java构造器(构造函数)使用注意问题和实例教程【详细介绍】

更新时间:2021年12月14日11时04分 来源:传智教育 浏览次数:

好口碑Java培训机构

Java构造器是什么?

Java构造器指的是Java构造方法(也叫“Java构造函数”)。Java构造方法是类的一种特殊方法,主要用来在创建和初始化一个类的新对象,简化了对象初始化的代码,总与new运算符一起使用在创建对象的语句中。需要注意的是一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们,即构造函数的重载。


Java构造器注意问题

·构造器必须与主类同名

·可以有0 个、1个或多个参数

·没有任何返回值,包括void

·构造器可以重载

·默认返回类型就是对象类型本身

·只能与new运算符结合使用


Java构造器的作用

1.初始化成员属性,而不是初始化对象,初始化对象是通过new关键字实现的

2.通过new调用构造方法初始化对象,编译时根据参数签名来检查构造函数,称为静态联编和编译多态(参数签名:参数的类型,参数个数和参数顺序)

3.创建子类对象会调用父类构造方法但不会创建父类对象,只是调用父类构造方法初始化父类成员属性


Java构造器语法格式

class class_name {
    public class_name(){}    // 默认无参构造方法
    public ciass_name([paramList]){}    // 定义构造方法
    …
    // 类主体
}

Java构造函数的种类

Java构造方法主要分为无参构造方法和有参构造方法两种,例如下面的案例:

public class MyClass {
    private int m;    // 定义私有变量
    MyClass() {
        // 定义无参的构造方法
        m = 0;
    }
    MyClass(int m) {
        // 定义有参的构造方法
        this.m = m;
    }
}

该示例定义了两个构造方法,分别是无参构造方法和有参构造方法。在一个类中定义多个具有不同参数的同名方法,这就是方法的重载。这两个构造方法的名称都与类名相同,均为MyClass。在实例化该类时可以调用不同的构造方法进行初始化。

注意:类的构造方法不是要求必须定义的。如果在类中没有定义任何一个构造方法,则 Java 会自动为该类生成一个默认的构造方法。默认的构造方法不包含任何参数,并且方法体为空。如果类中显式地定义了一个或多个构造方法,则 Java 不再提供默认构造方法。

java构造器用法

Java构造器怎么用?

下面我们通过实例来演示Java构造器的使用

1) 首先在员工类 Worker 中定义两个构造方法,代码如下:

public class Worker {
    public String name;    // 姓名
    private int age;    // 年龄
    // 定义带有一个参数的构造方法
    public Worker(String name) {
        this.name = name;
    }
    // 定义带有两个参数的构造方法
    public Worker(String name,int age) {
        this.name = name;
        this.age = age;
    }
    public String toString() {
        return "大家好!我是新来的员工,我叫"+name+",今年"+age+"岁。";
    }
}

在 Worker 类中定义了两个属性,其中 name 属性不可改变。分别定义了带有一个参数和带有两个参数的构造方法,并对其属性进行初始化。最后定义了该类的 toString() 方法,返回一条新进员工的介绍语句。

提示:Object 类具有一个 toString() 方法,该方法是个特殊的方法,创建的每个类都会继承该方法,它返回一个 String 类型的字符串。如果一个类中定义了该方法,则在调用该类对象时,将会自动调用该类对象的 toString() 方法返回一个字符串,然后使用“System.out.println(对象名)”就可以将返回的字符串内容打印出来。

2)在 TestWorker 类中创建 main() 方法作为程序的入口处,在 main() 方法中调用不同的构造方法实例化 Worker 对象,并对该对象中的属性进行初始化,代码如下:

public class TestWorker {
    public static void main(String[] args) {
        System.out.println("-----------带有一个参数的构造方法-----------");
        // 调用带有一个参数的构造方法
        Worker worker1 = new Worker("张强");
        System.out.println(worker1);
        System.out.println("-----------带有两个参数的构造方法------------");
        // 调用带有两个参数的构造方法
        Worker worker2 = new Worker("李丽",25);
        System.out.println(worker2);
    }
}

在上述代码中,创建了两个不同的 Worker 对象:一个是姓名为张强的员工对象,一个是姓名为李丽、年龄为 25 的员工对象。对于第一个 Worker 对象 Worker1,并未指定 age 属性值,因此程序会将其值采用默认值 0。对于第二个 Worker 对象 Worker2,分别对其指定了 name 属性值和 age 属性值,因此程序会将传递的参数值重新赋值给 Worker 类中的属性值。



猜你喜欢:

Java高并发解决方案

javase和javaee的区别

单体架构是什么?

传智教育JavaEE高手班课程

0 分享到:
和我们在线交谈!