没有合适的资源?快使用搜索试试~ 我知道了~
类与对象 类由成员变量(也称属性)和成员方法组成。
资源推荐
资源详情
资源评论
实验 3 类与对象编程
3.1 实验目的
(1) 了解类的成员设计
(2)掌握类与对象的关系
(3) 理解静态方法与实例方法的使用差异;
3.2 知识要点
3.2.1 类
作为 java 程序的基本要素,类由成员变量(也称属性)和成员方法组成。属性包括
常量和变量,方法则包括构造方法和一般方法,在定义类时,它们习惯上按如下次序排列:
class Order
{
// nal 属性
// 属性
// 构造方法
// 方法
}
类的属性一般定义为私有的,而将类的方法定义为 public。
3.2.2 对象创建与构造方法
类是创建对象的模板,而对象是类的实例。对象是一组属性和方法的封装体。创建对
象用到保留字 new。
格式为: 引用变量 = new 构造方法(参数)
有关构造方法有以下几点说明:
(1)创建对象时将用到构造方法;系统自动调用参数匹配的构造方法为对象初始化。
(2)构造方法的名称必须与类名同名,构造方法没有返回类型;
(3)一个类可提供多个构造方法,这些方法的参数不同。
(4)如果程序中未提供构造方法,系统自动提供空的无参构造方法。
3.2.3 对象引用变量与对象关系
对象创建后,将对象的引用赋值给某个引用变量,就可以通过该变量访问对象的成员
属性和方法。
成员的调用通过“.”运算符实现,格式为:
对象名.属性
对象名.方法(参数)
以下结合实例介绍对象引用变量与对象的关系。
class Point {
int x,y; //属性变量
public Point(int x1,int y1) { //构造方法
x=x1; //将参数值赋值给对象的属性变量
y=y1;
}
public static void main(String args[]) {
Point p1=new Point(2,3); //创建点(2,3)用 p1 引用
Point p2=new Point(3,5); //创建点(3,5)用 p2 引用
Point p3=p1; //p3 和 p1 代表同一对象
p1.x=18; //修改 p1 的 x 属性值
System.out.println(p3.x); //输出 p3 的 x 属性值
p1=p2; //p1“叛变”,改为和 p2 指向同一点
System.out.println(p1.x);
}
}
【运行结果】
18
3
【有关说明】
(1)main 方法中首先创建两个对象,用带阴影的方框表示,分别用 p1 和 p2 两个引
用变量存储其引用地址。
(2)语句 Point p3=p1;的作用是定义一个 Point 类型的引用变量 p3 和 p1 值向同一
对象;如图 1 所示。
(3)语句 p1.x=8;的作用是修改 p1 所引用对象的 x1 值,由于 p1 和 p3 是“代表”同
一对象,因此,输出 p3.x 和 p1.x 是一样的,也就是 18.
(4) 语句 p1=p2 将 p1 改为指向和 p2 所指的对象,这样,再输出 p1.x 则结果为 3。
【重要提示】 对象和对象引用变量是两个不同的概念,对象引用变量中存放的是对象
的地址。通常访问对象需要借助对象引用变量,将对象的地址赋值给对象引用变量,则该
引用变量就“代表”这个对象,但是引用变量与对象并不是固定的关系,通过更改引用变量
的值,可让其“代表”另一对象,也可以通过引用变量之间的赋值让多个引用变量指向同一
对象。如果一个对象没有任何引用变量指向它,则要访问该对象就再也不可能,Java 垃圾
回收器将自动回收该对象占用的内存。
3.2.4 静态空间与实例空间
带有 static 修饰的属性称为静态属性或称类变量;带有 static 修饰的方法称为静态方
法,在静态方法内可以直接访问静态属性或调用其他静态方法,静态属性在分配空间时与
对象无关,静态空间的引用是与类关联,一个类的静态属性成员只有一份,访问静态成员
可以通过类名(在自己类中也可以直接访问),也可以通过对象,静态属性是共享的,该
类的任何对象均可访问它。
【思考】静态属性外层包裹的是类,因此必须指明是访问哪个类的静态成员,如果
是在自己类中则可以省略,由于对象是由类创建,自然对象能标识其所属类,因此也允许
用对象做前缀访问静态属性。非静态属性也称实例变量,也就是说,要通过实际的对象才
能访问,其外层包裹的是对象,不同对象其实例变量的值通常是不同的。
例如,以下类中 y 是属于类的属性变量,而 x 是属于对象的实例变量,y 是依托类的,在
类装载时将给其分配空间并赋值,整个类只有一个 y;而 x 只有创建了具体对象才存在,
不同对象有各自的 x 属性,如图 7-2 所示。
剩余15页未读,继续阅读
资源评论
南猿北哲~
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 服务器生成的一个自用的模型
- MATLAB图片调整亮度算法
- 【python毕业设计】基于python的抑郁症患者看护系统(完整前后端源码).zip
- 【python毕业设计】基于Python的电影票房数据分析系统的设计与实现(完整前后端源码).zip
- 基于OSGEarth引擎,实现三维动态海洋流场可视化C++源码(高分项目)
- java新手小游戏学习资料练手游戏.zip
- .obsidian.zip
- 【python毕业设计】基于Django的个性化餐饮管理系统(完整前后端源码).zip
- 使用C#进行Yolov5模型的训练以及推理
- 【python毕业设计】django食堂外卖系统(完整前后端源码).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功