前面说过,类是创建对象的模板,设计出了类还远远不够,还需要根据类来创建实例对象。在Java程序中,创建对象分为如下两步:
1.声明一个引用变量
声明一个类的引用变量,语法格式为:
例如,声明一个MyCircle2类的对象名称c1,代码如下:
2.实例化一个对象
使用new关键字在堆内存创建一个对象并调用构造方法初始化,最后将对象的地址赋值给引用变量。语法格式为:
例如:
上面代码表示创建一个MyCircle2类的实例对象,并将该对象在内存中的地址赋值给变量c1。
以上两步可以合并为一条语句,语法格式为:
例如:
(www.xing528.com)
注意:
每实例化一个对象,就会在堆内存中生成一个对象。
【例3-3】
根据MyCircle2类定义,编写测试用例来创建对象,分别调用无参构造方法和有参构造方法。
My Circle2Test1测试类源代码如图3-5所示。
图3-5 创建对象演示
下面以程序第7行“My Circle2 c2=new MyCircle2(2.5);”来大致说明系统创建对象所做的工作:
(1)系统在栈内存中声明一个My Circle2类型的引用变量c2,这是一个局部变量。
(2)在堆区为实例对象分配内存。
(3)将方法区内对实例变量的定义拷贝一份到堆区(不包括任何静态变量),然后赋默认值。新创建MyCircle2类对象的radius变量被默认初始化为0.0d。
(4)执行实例初始化代码。如果变量定义时有赋值,对实例变量执行显式初始化。本例新创建的MyCircle2类对象的radius变量被显式初始化为5.0d,即从0.0d变为5.0d。再执行构造方法,该对象radius变量从5.0d变为2.5d。
(5)将堆区新创建的MyCircle2类对象的地址赋值给栈区的引用变量c2。
可见:new关键字实例化一个类对象,将给这个对象分配内存,new关键字还执行了实例初始化,调用了对象的构造方法,并返回一个指向该内存的引用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。