理论教育 Java面向对象程序设计-实例化与构造方法

Java面向对象程序设计-实例化与构造方法

时间:2023-11-25 理论教育 版权反馈
【摘要】:例3.4:实现一个加、减、乘、除操作。我们仍然沿用通常的称呼,将其称为构造方法。构造方法没有返回类型。构造方法一般不用private 修饰,这会导致无法在外部创建对象。

Java面向对象程序设计-实例化与构造方法

1.实例化

在Java 语言程序中,Java 类只有实例化(创建对象)才能被使用,一个对象的生命周期被分为三个阶段:对象的创建、使用和清除。

创建一个对象首先需要声明一个类变量,该变量的数据类型为已经定义好的类,但是声明变量并不产生该类型的对象。Java 中通过使用new 关键字创建一个类的对象,创建对象的过程称为实例化。实例化后的类变量才是一个具有实际意义的Java 对象,才可以在程序中使用。

声明类变量和实例化对象的语法格式如下:

如有一个Person 类,创建一个该类的对象,代码如下:

实例化时首先为对象分配内存,执行该类的构造方法,返回该对象的引用并将其赋给类变量。类通过定义构造方法产生对象,在下面的内容中介绍构造方法。

2.对象的使用

对象的使用是引用对象的成员变量和成员方法,可以通过运算符“.”实现对已有对象中的变量的访问和方法的调用。被引用的变量和方法可以通过设定的访问权限来允许或禁止其他对象对它的访问和调用。

访问对象的某个变量的语法格式如下:

调用对象的某个方法的语法格式如下:

obj 是一个对象,它可以是一个已生成的对象,也可以是能够生成对象引用的表达式。variable 是一个变量的名称,methodName 是一个方法的名称,paramList 是方法的参数列表(可有可无)。

下面演示类定义和对象的使用,如例3.4 所示。

例3.4:实现一个加、减、乘、除操作。

以上程序运行结果如下:

在上面的程序中,输出显示语句System.out.println 就是通过“.”运算符调用System 类的out 静态标准输出流(PrintStream)对象中的println()方法。System类是java.lang 基础类库提供的,println()是标准输出流类定义的用于显示文字的方法。

在同一个类中调用方法,可以直接使用“方法名(实参)”来调用。

3.构造方法

构造方法是类中一种特殊的方法,它一般由系统在创建对象(即类实例化)时自动调用。构造方法是对象中第一个被执行的方法,主要用于申请内存、对类的成员变量进行初始化等操作。构造方法虽然也位于类里面,但在很多情况下与普通成员方法表现不同,所以有时也称为“构造器”。我们仍然沿用通常的称呼,将其称为构造方法。

构造方法是在创建给定类的实例时调用的一个方法,也可以看作是一种特殊的类成员方法,构造方法的特殊性主要表现在以下两个方面:

➢ 构造方法的方法名必须与类名相同。

➢ 构造方法没有返回类型。(www.daowen.com)

构造方法的一般语法格式为:

构造方法也可以不带有任何参数,即可以没有参数列表。构造方法也可以带有访问修饰符,即public,protected,private 和默认(省略情况下)。

由于构造方法在类实例化时被调用,所以一般在方法体中初始化成员变量。

如果一个类没有显式声明构造方法,则系统会自动提供一个默认无参的构造方法。这个构造方法没有参数,方法体也为空,代码如下:

下面给出一个带参数的构造方法,代码如下:

如果没有提供构造方法,编译器会提供一个默认的构造方法(没有参数)。这里其实也隐含着一个意思:如果提供了构造方法,那么编译器是不会提供默认的构造方法的。可以通过下面的代码来验证,代码如下:

只要类显示地声明了带参数的构造方法,那么这个无参的构造方法就不会默认存在了,如果需要使用无参的构造方法,那么必须显式地声明,代码如下:

在上面的代码中我们手动地提供了一个无参的构造方法Person(),现在代码是可以通过编译的。

构造方法虽然有其特殊性,但它也是成员方法,所以构造方法也可以重载。一个类可以定义多个构造方法,但要求参数列表不同,多个构造方法是由不同的输入参数(形式参数)区分的。当通过该类创建对象时,需要指明创建该对象使用的构造方法。我们再为Person 类定义一个构造方法,代码如下:

下面给出一个完整的构造方法示例,如例3.5 所示。

例3.5:创建一个Person 类,用于输出一个人的详细信息。

以上程序运行结果如下:

使用构造方法需要注意以下几项:

➢ 构造方法的名字必须和类的名字相同。

➢ 构造方法不能有返回值。尽管没有返回值,也不能用“void”修饰。

➢ 构造方法一般不用private 修饰,这会导致无法在外部创建对象。

➢ 构造方法不能由对象显式地调用。一般通过new 关键字来调用。

➢ 构造方法的参数列表可以为空,也可以有参数。根据参数的有无,可以将构造方法分为无参数的构造方法和带参数的构造方法。

➢ 用户定义的类可以拥有多个构造方法,但要求参数列表不同。

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

我要反馈