欢迎来到天天文库
浏览记录
ID:37711432
大小:236.02 KB
页数:19页
时间:2019-05-29
《java类与对象的创建》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、试验四类和对象的创建一.类的定义 类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类用来定义对象的模板。 类的实现包括两部分:类声明和类体。基本格式为: 修饰符class类名[extends父类名]{ /*类体的内容*/ }1. 类声明 以下是一个类声明的例子。 classPeople成为类声明,People是类名。习惯上,类名的第一个字母大写,但这不是必须的。类的名字不能是Java中的关键字,要符合标识符规定,即类的名字可以由字母、下划线、数字或美元符号组成,并且第一个字母不能是数字。但给类命名时,最好遵守下列规则: (1)如果类名使用
2、拉丁字母,那么名字的首写字母使用大写字母,如Hello、Time、People等。 (2)类名最好容易识别,当类名由几个“单词”复合而成时,每个单词的首写字母使用大写,如BeijingTime、AmericanGame、HelloChina等。2. 类体 编写类的目的是为了描述一类事物共有的属性和功能,描述过程由类体来实现。类声明之后的一对大括号“{”、“}”以及它们之间的内容称为类体,大括号之间的内容称为类体的内容。 类体的内容由两部分构成:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。 下面是一个类名为“Trapezia”的类,类体内容的变量定义部
3、分定义了4个float类型变量:top、bottom、high和laderArea,方法定义部分定义了两个方法:“getArea”和“setHigh”。二.对象1. 对象的创建 创建一个对象包括对象的声明和为对象分配内存两个步骤。 (1)对象的声明。 一般格式为: 类的名字对象名字; 如: 这里People是类的名字,zhubajie是我们声明的对象的名字。 (2)为声明的对象分配内存。 使用new运算符和类的构造方法为声明的对象分配内存,如果类中没有构造方法,系统会调用默认的构造方法(你一定还记得构造方法的名字必须和类名相同这一规定),如: 例1:
4、「注」如果类里定义了一个或多个构造方法,那么Java不提供默认的构造方法。2. 对象的使用 对象不仅可以改变自己变量的状态,而且还拥有了使用创建它的那个类中的方法的能力,对象通过使用这些方法可以产生一定的行为。 通过使用运算符“.”,对象可以实现对自己的变量访问和方法的调用。 例2: 程序执行结果如下: 类中的方法可以操作成员变量,当对象调用该方法时,方法中出现的成员变量就是指该对象的成员变量。在上述代码中,当对象zhubajie调用speak方法后,就将自己的头修改成:“歪着头”。同样,对象sunwukong调用speak方法后,也将自己的头修改成:“歪着头”。3. 对
5、象的引用和实体 当用类创建一个对象时,类中的成员变量被分配内存空间,这些内存空间称为该对象的实体,而对象中存放着引用,以确保实体由该对象操作使用。 再以例1中的Point类为例,假如分别使用类的构造方法Point(intx,inty)创建了两个对象p1、p2: 那么内存模型如图4-1-1所示:图4-1-1 对象内存模式1 假如在程序中使用了下述赋值语句: p1=p2; 把p2的引用(p2在内存中的名字)赋给了p1,因此p1和p2本质上是一样的了。虽然在源文件中p1、p2是两个名字,但在系统看来它们的名字是一个:0xDD。系统将取消原来分配给p1的内存,即释放分配给p
6、1的变量。这时如果输出p1.x的结果将是6,而不是12,即p1、p2有相同的实体。内存模式变成如图4-1-2所示:图4-1-2 对象内存模式2 因此,如果一个类创建的两个对象具有相同的引用,那么就具有完全相同的实体。没有实体的对象称为空对象,空对象不能使用,即不能让一个空对象去调用方法产生行为。假如程序中使用了空对象,程序在运行时会出现异常:NullPointerException。由于对象是动态地分配实体,所以Java的编译器对空对象不做检查。因此,在编写程序时要避免使用空对象。 「注」实际上,Java有所谓“垃圾收集”机制,这种机制周期地检测某个实体是否已不再被任何对象所拥有,如
7、果发现这样的实体,就释放实体占有的内存。因此,Java编程人员不必像C++程序员那样,要时刻自己检查哪些对象应该释放内存。在上述程序中,当将p2的引用赋给p1后,最初分配给对象p1的变量(实体)所占有的内存就会被释放。4. 参数传值 当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必须有具体的值。在Java中,方法的所有参数都是“传值”的,也就是说,方法中参数变量的值是调用者指定的值的副本。例
此文档下载收益归作者所有