首页 理论教育 Java程序设计与应用开发-构造方法及其重载

Java程序设计与应用开发-构造方法及其重载

时间:2023-11-26 理论教育 版权反馈
【摘要】:事实上,不论是系统提供的标准类,还是用户自定义的类,往往都含有多个构造方法。默认构造方法的参数列表及方法体均为空。比如,在前面4.2.1节中,例4-1的Date类中没有定义构造方法,系统就会为Date类生成一个默认的或缺省的构造方法Date(){}。构造方法的重载将在4.2.6节中学习。

Java程序设计与应用开发-构造方法及其重载

在前面的例4-3中,用语句

定义且实例化对象customer1后,再用语句

为对象customer1的变量name,address,telephone设定初值。这种为对象进行初始化的方法称为显式初始化。它是为对象设定初值的一种简单方法。实际上,我们可以用另一种更为高效且简单的方法来完成对象的初始化。比如,创建按钮Button对象时,可能需要为按钮取一个名字,也就是在按钮上显示一个字符串。这样就要用一个字符串来进行初始化。显式初始化显然做不到这一点。为了实现这样的功能,系统定义了一个特殊的成员方法,即构造方法来完成对象的初始化工作。

1.构造方法的作用与定义

构造方法(constructor)是特殊的成员方法,有着特殊的功能。它的名字与类名完全相同,没有返回值。在创建对象实例时由new运算符自动调用。同时为了方便地创建实例,一个类可以有多个具有不同参数列表的构造方法,即构造方法可以重载。事实上,不论是系统提供的标准类,还是用户自定义的类,往往都含有多个构造方法。构造方法不能声明为native,abstract,synchronized或final。构造方法虽然没有返回值,但在构造方法前不能用修饰词void,这是因为一个类构造方法的返回值类型就是类本身。在创建对象时,系统首先自动调用构造方法,因此在程序中不需要直接调用构造方法。

下面的例4-5改写例4-3的Customer类,用定义构造方法实现对象初始化,其中拷贝构造方法部分是供后面讲述的内容作验证的,在现在的学习中可以跳过。

【例4-5】定义构造方法实现对象初始化

程序运行结果是对象customer1与customer2的数据完全一样。参见例4-3的结果。(www.xing528.com)

2.默认的构造方法

每个类至少有一个构造方法。如果程序员没有为类定义构造方法,系统会自动为该类生成一个默认的构造方法。默认构造方法的参数列表及方法体均为空。比如,在前面4.2.1节中,例4-1的Date类中没有定义构造方法,系统就会为Date类生成一个默认的或缺省的构造方法Date(){}。这个构造方法没有参数列表,有空的方法体“{}”。在程序中可以使用new Xxx()来创建对象实例,这里Xxx是类名。如果程序员定义了一个或多个构造方法,系统会自动屏蔽掉默认构造方法。在自定义的几个构造方法中最好包含一个参数表为空的构造方法,否则,在调用new Xxx()时将会出现编译错误。可以删除例4-5的main()方法中的注释号,加以验证。

3.拷贝构造方法

另外,还有一个简单的构造方法,它的参数只是一个指向该构造方法所属类的对象的引用。这种形式的构造方法通常用于复制一个已经存在的对象,因此称这种构造方法为拷贝构造方法。我们已在例4-5中,用

复制出对象customer2。

构造方法的重载将在4.2.6节中学习。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈