一.创建对象
下面的语句创建了一个对象并把它的引用赋值给了一个变量:
这条语句由三部分组成(下面将详细讨论):
- 声明对象变量:声明一个可以引用稍后创建的对象的变量。
- 实例化类:new关键字是实例化类的操作符。
- 初始化对象:new从操作符将会调用类的构造器,从而完成对象的初始化。
1.声明对象变量
就像声明基本数据类型的变量一样java基础教程11,声明对象变量的语法如下:
这会告诉编译器variableName将会用来引用一个ClassName类的对象。在使用这个变量之前,必须将一个对象的引用赋值给它,否则将会造成编译错误。
2.实例化类
new操作符通过为对象分配内存并返回对这块内存的引用来实例化一个类。new操作符还会调用构造方法。
new操作符后需要一个对构造方法的调用。构造方法的名字也就是需要实例化的类的名字。
可以不将new操作符返回的引用赋值给变量,它可以直接用在表达式中:
3.初始化对象
下面是Point类的代码:
Point类包含一个构造方法。这个构造方法接受两个整数参数,下面的代码提供23和94作为这些参数的值:
这条语句的结果可以用下面这张图说明:
下面是RectAngle类的代码,这个类有四个构造方法:
如果一个类有多个构造方法,则它们必须具有不同的签名。Java编译器根据参数的数量和类型区分构造方法。下面的代码创建了一个Point类的对象,并使用它和另外两个整数作为参数来创建一个RectAngle类的对象:
这条语句的结果可以用下面这张图说明:
所有类至少有一个构造方法。如果类没有提供构造方法,则Java编译器会自动提供一个无参构造方法,称为默认构造方法。此默认构造方法会调用类父级的无参构造方法。如果类没有使用extends关键字直接继承父类,这个类将会有一个隐含的父类——Object类,它有一个无参构造方法。如果类使用extends关键字继承了父类,但是父类没有无参构造方法,编译器将会给出错误。
如果类提供的构造方法里不包括无参构造方法,编译器将不会自动提供无参构造方法。此时使用无参构造方法初始化对象将会产生一个错误。
二.使用对象
对于上面的rectOne所引用的对象来说,我们可以以如下方式去访问它的height域:
使用以下的语法来调用一个对象的方法:
下面的语句调用了rectOne所引用的对象的getArea方法并将返回值赋值给了一个变量:
垃圾回收
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/18645.html