Object类及其方法PPT
合集下载
Java常用API讲解PPT模板
1-15string的构造方法讲解一 string的构造方法讲解一
1-17string的构造方法讲解二string 的构造方法讲解二
1-14string类的概述及字符串的特点 string类的概述及字符串的特点
1-16同值的字符串进行比较同值 的字符串进行比较
1-18string的构造方法讲解三及程序 异常的查看方法string的构造方法讲
Aห้องสมุดไป่ตู้
equals方法的重写
1-8finalize方法和clone方
B
法的讲解finalize方法和
clone方法的讲解
1-9scanner的概述及构造方
C
法讲解scanner的概述及构
造方法讲解
1-10scanner的数据录入匹
D
配问题scanner的数据录入
匹配问题
1-11scanner的next和nextline的
1-4object类的tostring方法的组成object类的tostring方 法的组成
1-5tostring方法的重写tostring方法的重写
1-6==比较两个对象和equals方法比较两个对象的讨论==比 较两个对象和equals方法比较两个对象的讨论1
第1章java常用api讲解
1-7equals方法的重写
解三及程序异常的查看方法
第1章java常用 api讲解
1-19字符串常量和变量相加之后 的问题讨论字符串常量和变量相 加之后的问题讨论
1-20字符串练习之看程序写结果 字符串练习之看程序写结果
感谢聆听
java常用api讲解
• 202x-11-11
演讲人
01 第1章java常用api讲解
第1章java常 用api讲解
1-17string的构造方法讲解二string 的构造方法讲解二
1-14string类的概述及字符串的特点 string类的概述及字符串的特点
1-16同值的字符串进行比较同值 的字符串进行比较
1-18string的构造方法讲解三及程序 异常的查看方法string的构造方法讲
Aห้องสมุดไป่ตู้
equals方法的重写
1-8finalize方法和clone方
B
法的讲解finalize方法和
clone方法的讲解
1-9scanner的概述及构造方
C
法讲解scanner的概述及构
造方法讲解
1-10scanner的数据录入匹
D
配问题scanner的数据录入
匹配问题
1-11scanner的next和nextline的
1-4object类的tostring方法的组成object类的tostring方 法的组成
1-5tostring方法的重写tostring方法的重写
1-6==比较两个对象和equals方法比较两个对象的讨论==比 较两个对象和equals方法比较两个对象的讨论1
第1章java常用api讲解
1-7equals方法的重写
解三及程序异常的查看方法
第1章java常用 api讲解
1-19字符串常量和变量相加之后 的问题讨论字符串常量和变量相 加之后的问题讨论
1-20字符串练习之看程序写结果 字符串练习之看程序写结果
感谢聆听
java常用api讲解
• 202x-11-11
演讲人
01 第1章java常用api讲解
第1章java常 用api讲解
ObjectARX实训讲义二自定义实体ppt课件
8
建立运行时类层次
rxInit (static) gpDesc (static variable) newAcRxClass acrxBuildClassHierarchy
9
类别判断函数
最基础的类AcRxObject提供了类型识别函数
virtual AcRxClass* isA() const; static AcRxClass* gpDesc; static AcRxClass* desc(); static CMyClass * cast(const AcRxObject* inPtr)
ObjectARX Trainer’Training
1
自定义实体的思路
什么是自定义实体
如何创建自定义实体
AcDbEntity虚函数的功能和使用
现场创建一个自定义实体 Tips and Tricks
2
•
自定义实体 操作自定义实体Smiley
什么是自定义实体
自定义一个图形对象、控制它图形显示,存储的数据,对 拖拽的响应,对捕捉的响应,平移、旋转等操作的响应
其它重要重载函数
设置自定义实体的捕捉函数
getOsnapPoints() transformBy()
对平移,复制,镜像等操作的响应函数
生成代理实体的图形形状函数
saveAs()
interSectWith()
16
相交函数
炸开函数
次常用重载函数
深度克隆
DeepClone wblockClone
01 第一章 面向对象概述
更加直接的:对象=属性+行为
1.1面向对象基本概念
2 对象——具有属性 属性刻画了对象的静态特征
车型名称 厂商 级别
十代思域220turbo 东风本田 紧凑型车
能源类型
汽油
环保标准
国V
上市时间
最大功率 (kW)
最大扭矩 (N·m)
发动机
2016.04 130 220
1.5T 177马力 L4
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象的分析过程
用户 开发者
一般需求
管理者 用户知识
问题域建模
专业领域知识
现实世界经验
问题域陈述
对象模型 动态模型
功能模型
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象分析的一般过程
获取需求内容陈述
建立系统的对象模型结构 建立对象的动态模型
类的例子
信息工程系的 帧一一同学
学生类
经贸管理系的 贾三三同学
尝试抽象——试将下列图标分类
不同角度,分类结果不一定 根 据 问 题 需 要 进 行 分 类
1.1面向对象基本概念
3 类——与对象的关系
• 每一个对象都是某一 个类的实例
• 每一个类在某一时刻 有零个或更多的实例
• 类是静态的:其语义 和关系在执行前就已 经定义好了
1.4面向对象思想与软件工程模型
1 瀑布模型
瀑布模型将软件生 命周期划分为软件 计划、需求分析和 定义、软件设计、 软件实现、软件测 试、软件运行和维 护这6个阶段,并 且规定了它们自上 而下的次序,如同 瀑布一样下落。每 一个阶段完成才进 行下一阶段。
1.1面向对象基本概念
2 对象——具有属性 属性刻画了对象的静态特征
车型名称 厂商 级别
十代思域220turbo 东风本田 紧凑型车
能源类型
汽油
环保标准
国V
上市时间
最大功率 (kW)
最大扭矩 (N·m)
发动机
2016.04 130 220
1.5T 177马力 L4
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象的分析过程
用户 开发者
一般需求
管理者 用户知识
问题域建模
专业领域知识
现实世界经验
问题域陈述
对象模型 动态模型
功能模型
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象分析的一般过程
获取需求内容陈述
建立系统的对象模型结构 建立对象的动态模型
类的例子
信息工程系的 帧一一同学
学生类
经贸管理系的 贾三三同学
尝试抽象——试将下列图标分类
不同角度,分类结果不一定 根 据 问 题 需 要 进 行 分 类
1.1面向对象基本概念
3 类——与对象的关系
• 每一个对象都是某一 个类的实例
• 每一个类在某一时刻 有零个或更多的实例
• 类是静态的:其语义 和关系在执行前就已 经定义好了
1.4面向对象思想与软件工程模型
1 瀑布模型
瀑布模型将软件生 命周期划分为软件 计划、需求分析和 定义、软件设计、 软件实现、软件测 试、软件运行和维 护这6个阶段,并 且规定了它们自上 而下的次序,如同 瀑布一样下落。每 一个阶段完成才进 行下一阶段。
ObjectARX讲义
按需加载
命令调用
Registry:通过注册表
从其他程序 Registry
按请求 代理检测
实时
acrxLoadModule 参见PolySamp
30
© 2005 Autodesk
加载 ObjectARX 程序 II
3. 5. 6. Operating System 1. LoadLibrary
32位
8.0(Visual Studio C/C++ 2005)(安装SP1)
32位、64位
2010
Studio C/C++ 32位、64位 9.0(Visual 2008)(安装SP1)
22
© 2005 Autodesk
ObjectARX SDK 内容
SDK包含: 库文件和头文件 开发文档 示例程序 实用工具
25
© 2005 Autodesk
.ARX = .DLL + 2 输出函数
acrxEntryPoint acrxGetApiVersion
.DLL .ARX
ObjectARX APIs API
.ARX .DLL
.EXE AutoCAD
26
© 2005 Autodesk
主要的库 - I
AcRx 对象和类管理库 (rxapi.lib) AcEd AutoCAD 编辑器工具库 (acedapi.lib) AcDb AutoCAD 数据库对象库 (acdb17.lib) AcGi AutoCAD 图形接口库 (acgiapi.lib) AcGe AutoCAD 几何库 (acge17.lib)
3
第3章-面向对象开发方法
3.1 面向对象方法的基本含义
3.1.2 面向对象方法和结构化方法的比较
面向对象方法 结构化方法 原型法 1.系统在分析阶 1.用户素质、系统分析 1.不适合大规模系统开发; 段对对象的抽象困员和管理者之间的沟通 2.开发过程管理要求高,要经过 难; 要求高; “修改—评价—再修改”的多次 2.需要一定的软 2.开发周期长,文档过 反复; 件基础支持才能应多,难于适应环境变化; 3.用户过早看到系统原型,误认 用; 3.结构化程度较低的系 为最终系统就是原型模样,易使 缺 点 3.结构化程度不 统,在开发初期难以锁 用户失去信心; 高 定功能要求; 4.开发人员易将原型取代系统分 4.各阶段的审批工作困 析;缺乏规范化的文档资料; 难;所使用的工具落后。 5.需要较高的系统开发环境支持, 如系统开发工具、软硬件、开发 环境、开发人员及用户素质等
定义一:面向对象方法是一种运用对象、类、封装、继承、 多态和消息等概念来构造、测试、重构软件的方法。
定义二: 面向对象方法是以认识论为基础,用对象来理 解和分析问题空间,并设计和开发出由对象构成的软件系 统(系统责任)的方法。 • 面向对象的分析过程就是认识客观世界的过程。
3.1 面向对象方法的基本含义
3.4 面相对象方法的优点
• 从认知学的角度来看,面向对象方法符合人们对客观世界 的认识规律。 • 面向对象方法开发的系统易于维护,其体系结构易于理解、 扩充和修改。面向对象方法开发的软件系统有对象类组成, 对象的封装性很好地体现了抽象和信息隐蔽的特征。当对 象的接口确定以后,实现细节的修改不会影响其他对象, 易于维护。 • 面向对象方法中的继承机制有力支持软件的复用。在同一 应用领域的不同应用系统中,往往会涉及到许多相同或相 似的实体,这些实体在不同的应用系统中存在许多相同的 属性和操作,也存在着一些不同的应用系统所特有的属性 和操作。可以通过继承来复用公共的属性和操作。
第九讲面向对象方法介绍
类是对象抽象的结果。有了类,对象就是类 的具体化,是类的实例。类可以有子类,同 样也可以有父类,从而构成类的层次结构。
类之间主要存在三种关系。它们是:关联、 聚合和泛化。
15
16
消息——
消息是一个对象要求另一个对象实施某项 操作的请求。在一条消息中,需要包含消 息的接收者和要求接收者执行哪项操作的 请求,而并没有说明应该怎样做,具体的 操作过程由接收者自行决定。
43
44
标准建模语言UML (顺序图)
44
45
标准建模语言UML (协作图)
45
46
标准建模语言UML (活动图)
46
47
标准建模语言UML (构件图)
Whnd.cpp: 窗口处理器
Whnd.obj: 窗口处理器
Graphic.dll: 图形库
Comhnd.cpp: 命令处理器
Comhnd.obj: 命令处理器
16
17
消息传递是对象之间相互联系的惟一途径。 发送者发送消息,接收者通过调用相应的 方法响应消息,这个过程被不断地重复, 使得应用程序在人的有效控制下运转起来, 最终得到相应的结果。可以说,消息是驱 动面向对象程序运转的源泉。
17
继承——
继承是类之间的一种常 见关系。这种关系为共 享数据和操作提供了一 种良好的机制。通过继 承,一个类的定义可以 基于另外一个已经存在 的类。继承是面向对象 程序设计方法的一个重 要标志,利用继承机制 可以大大提高程序的可 重用性和可扩充性。
• UML是一种建模语言而不是一种方法,UML本身是 独立于过程的。
31
32
标准建模语言UML
UML为人们提供了从不同的角度去观 察和展示系统的各种特征的一种标准表 达方式。在UML中,从任何一个角度对系 统所作的抽象都可能需要用几种模型图 来描述,而这些来自不同角度的模型图 最终组成了系统的完整模型。
类之间主要存在三种关系。它们是:关联、 聚合和泛化。
15
16
消息——
消息是一个对象要求另一个对象实施某项 操作的请求。在一条消息中,需要包含消 息的接收者和要求接收者执行哪项操作的 请求,而并没有说明应该怎样做,具体的 操作过程由接收者自行决定。
43
44
标准建模语言UML (顺序图)
44
45
标准建模语言UML (协作图)
45
46
标准建模语言UML (活动图)
46
47
标准建模语言UML (构件图)
Whnd.cpp: 窗口处理器
Whnd.obj: 窗口处理器
Graphic.dll: 图形库
Comhnd.cpp: 命令处理器
Comhnd.obj: 命令处理器
16
17
消息传递是对象之间相互联系的惟一途径。 发送者发送消息,接收者通过调用相应的 方法响应消息,这个过程被不断地重复, 使得应用程序在人的有效控制下运转起来, 最终得到相应的结果。可以说,消息是驱 动面向对象程序运转的源泉。
17
继承——
继承是类之间的一种常 见关系。这种关系为共 享数据和操作提供了一 种良好的机制。通过继 承,一个类的定义可以 基于另外一个已经存在 的类。继承是面向对象 程序设计方法的一个重 要标志,利用继承机制 可以大大提高程序的可 重用性和可扩充性。
• UML是一种建模语言而不是一种方法,UML本身是 独立于过程的。
31
32
标准建模语言UML
UML为人们提供了从不同的角度去观 察和展示系统的各种特征的一种标准表 达方式。在UML中,从任何一个角度对系 统所作的抽象都可能需要用几种模型图 来描述,而这些来自不同角度的模型图 最终组成了系统的完整模型。
Python语言类和对象ppt课件
def __init__(self,name = "默认的熊"): = name
def kill(self): print("%s,是保护动物,不能杀..."% )
8.2 类的定义与使用
第八章 类和对象
8.2.3 类的构造方法及专有方法 代码运行结果如下: >>> b = Bear() >>> b.kill() 默认的熊,是保护动物,不能杀... >>> c = Bear('替代熊') >>> c.kill() 替代熊,是保护动物,不能杀... 在上例中,我们把构造函数的参数name设置为默认值:“默认的熊”
8.1 理解面向对象
第八章 类和对象
8.1.2面向对象术语简介
实例化:创建类的一个实例的过程。 封装:把对象的属性、方法、事件集中到一个统一的类中,并对调用者屏 蔽其中的细节。 继承:一个类共享另一个类的数据结构和方法的机制称为继承。起始类称 为基类、超类、父类,而继承类称为派生类、子类。继承类是对被继承类 的扩展。 多态:一个同样的函数对于不同的对象可以具有不同的实现,就称为多态。 接口:定义了方法、属性的结构,为其成员提供规约,不提供实现。不能 直接从接口创建对象,必须首先创建一个类来实现接口所定义的内容。
8.1 理解面向对象
第八章 类和对象
8.1.2面向对象术语简介 重载:一个方法可以具有许多不同的接口,但方法的名称是相同的。 事件:事件是由某个外部行为所引发的对象方法。 重写:在派生类中,对基类某个方法的程序代码进行重新编写,使其实现 不同的功能,我们把这个过程称为重写。 构造函数:是创建对象所调用的特殊方法。 析构函数:是释放对象时所调用的特殊方法。
def kill(self): print("%s,是保护动物,不能杀..."% )
8.2 类的定义与使用
第八章 类和对象
8.2.3 类的构造方法及专有方法 代码运行结果如下: >>> b = Bear() >>> b.kill() 默认的熊,是保护动物,不能杀... >>> c = Bear('替代熊') >>> c.kill() 替代熊,是保护动物,不能杀... 在上例中,我们把构造函数的参数name设置为默认值:“默认的熊”
8.1 理解面向对象
第八章 类和对象
8.1.2面向对象术语简介
实例化:创建类的一个实例的过程。 封装:把对象的属性、方法、事件集中到一个统一的类中,并对调用者屏 蔽其中的细节。 继承:一个类共享另一个类的数据结构和方法的机制称为继承。起始类称 为基类、超类、父类,而继承类称为派生类、子类。继承类是对被继承类 的扩展。 多态:一个同样的函数对于不同的对象可以具有不同的实现,就称为多态。 接口:定义了方法、属性的结构,为其成员提供规约,不提供实现。不能 直接从接口创建对象,必须首先创建一个类来实现接口所定义的内容。
8.1 理解面向对象
第八章 类和对象
8.1.2面向对象术语简介 重载:一个方法可以具有许多不同的接口,但方法的名称是相同的。 事件:事件是由某个外部行为所引发的对象方法。 重写:在派生类中,对基类某个方法的程序代码进行重新编写,使其实现 不同的功能,我们把这个过程称为重写。 构造函数:是创建对象所调用的特殊方法。 析构函数:是释放对象时所调用的特殊方法。
Java编程基础及应用(第2版)教学课件第5章 类和对象
变量定义及初始化;〃声明成员变量 [方法修饰字]返回值的数据类型方法名称(参数1,参数 2...)
{ 程序语句! 〃定义成员方法 [return表达式];
} }
7
§5.1.2 类的定义
说明: (1) class关键字,用于定义类。“class类名”是类的声明 部分, 类名必须是合法的Java标识符,通常第一个字母大写 ,能体现类的功能和作用。 (2 )类的修饰字有:[public] > [abstract | final] 、缺省方式 为 friendly。其中,abstract类不能直接产生属于这个类的对 象;final类不能被其他任何类所继承;public类不但可以被同 一程序包中的其他类使用,别的程序包中的类也可以使用; friendly(缺省)类只能被本包中的其他类使用。
一个对象 就要为对象的各个成员变量分配存 储空间,可以通过 引用对象的成员来使用对 象。 -对象数据成员的引用方式如下:
-对象成员方法的引用方式如下:
22
§5.1.3 对象的创建、使用及清除
例5.3定义DogTestl类,创建该类对象dog,使用该对象 并输
岀相应信息。
程序运行结果: dog阿黄的年龄:3,毛发的颜色:黄色 狗在汪汪叫…
(4) 方法不能嵌套,即不能在方法中再声明其他方法。 (5) 同一个类中的方法可以访问该类的成员变量。 (6) 一个类的方法只能访问自己的局部变量。
17
§5.1.2 类的定义
-例5.1定义Dog类,并设置其属性和方法。
在上面的程序屮,Dog类定义了name、age和color三 个属性,分别表示狗的姓名、年龄和毛发颜色,然后 定义了一个bark()方法,表明狗有汪汪叫的能力。
返回值的 类型和访问限制;方法体由括号内的声明部分和语 句部分组成,描述方法的功能。
{ 程序语句! 〃定义成员方法 [return表达式];
} }
7
§5.1.2 类的定义
说明: (1) class关键字,用于定义类。“class类名”是类的声明 部分, 类名必须是合法的Java标识符,通常第一个字母大写 ,能体现类的功能和作用。 (2 )类的修饰字有:[public] > [abstract | final] 、缺省方式 为 friendly。其中,abstract类不能直接产生属于这个类的对 象;final类不能被其他任何类所继承;public类不但可以被同 一程序包中的其他类使用,别的程序包中的类也可以使用; friendly(缺省)类只能被本包中的其他类使用。
一个对象 就要为对象的各个成员变量分配存 储空间,可以通过 引用对象的成员来使用对 象。 -对象数据成员的引用方式如下:
-对象成员方法的引用方式如下:
22
§5.1.3 对象的创建、使用及清除
例5.3定义DogTestl类,创建该类对象dog,使用该对象 并输
岀相应信息。
程序运行结果: dog阿黄的年龄:3,毛发的颜色:黄色 狗在汪汪叫…
(4) 方法不能嵌套,即不能在方法中再声明其他方法。 (5) 同一个类中的方法可以访问该类的成员变量。 (6) 一个类的方法只能访问自己的局部变量。
17
§5.1.2 类的定义
-例5.1定义Dog类,并设置其属性和方法。
在上面的程序屮,Dog类定义了name、age和color三 个属性,分别表示狗的姓名、年龄和毛发颜色,然后 定义了一个bark()方法,表明狗有汪汪叫的能力。
返回值的 类型和访问限制;方法体由括号内的声明部分和语 句部分组成,描述方法的功能。
uml类图-对象图-包图PPT课件
Company
W heel
Department
-
24
Company Department
-
25
类图的抽象层次
在软件开发的不同阶段使用的类图具有不同的抽 象层次。一般地,类图可分为三个层次,即概念 层,说明层和实现层。
类的概念层,说明层和实现层的划分最先是由
Steve Cook和John Daniels引入的。
➢类 ➢ 接口 ➢ 协作 ➢ 依赖、泛化和关联关系
类图可以包含注解和约束; 类图还可以有包或子系统,二者都用于把 模型元素聚集成更大的组件。
-
5
类(Class)
A class is the descriptor for a set of objects with similar structure, behavior, and relationships.
Camera Sensors::Vision::Camera 包中可以包含其它建模元素,如class, interface, component, node, use case, package, … , 等。 包可以嵌套,但嵌套层次不要过深。 包没有实例,即在系统运行时见不到包。 包之间可以存在依赖关系, 但这种依赖关系不存在传递性。
➢ 概念层(Conceptual)类图描述应用领域中的概念,一般地, 这些概念和类有很自然的联系,但两者并没有直接的映射关 系。
➢ 说明层(Specification)类图描述软件的接口部分,而不是软件 的实现部分。
➢ 实现层(Implementation)类图才真正考虑类的实现问题,揭示 实现细节。
-
3
类图的应用
类图用于对系统静态设计视图建模。与数据模型 不同,它不仅显示了信息的结构,同时还描述了 系统的行为。 类图中可以包含接口,包,关系等建模元素,也 可以包含对象,链等实例。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
3、public String toString()
• 返回对象的字符串表示。以便用户能够 获得一些有关对象状态的基本信息
• 简单说就是利用字符串来表示对象。 • toString方法的object版本构造了一个
字符串,包含该对象的类名、一个@字 符和实例散列码的十六进制表示。
10
toStrinLeabharlann 的调用方式功能:使相等对象拥有相同的哈希码 尽量让不等的对象具有不同的哈希码。
8
例如: • public int hashCode(){
• //按照Hashcode约定,与equals()相关
• int type=41; //素数可以改变 • //return type*43+id; • return type*43+name.hashCode(); •}
• 1、必须实现Cloneable接口。(注意:
Cloneable接口的出现与接口的正常使用没有任何关系, 在这,接口只是作为标记(没有方法),它并没有指定 clone方法。)
• 2、通过Object 类实现的clone方法,它通过
把原对象的所有域拷贝到新对象中以完成简单 的克隆。(注:子类只能调用受保护的clone方法克
11
例如:
• public String toString(){ • return getClass().getName() + '@'
+ Integer.toHexString(hashCode()) • }//建议所有的类都重写toString()方法 • 这是Object类的toString方法。
• System.out.print/ln() 打印一个对象 其
• 实就是打印这个对象 toString 方法的返 回值。自动调用
• “+”连接字符串时,自动调用该对象类 的toString()方法:如 System.out.println(“info”+Person);
• 对象.toString();
12
3、protected Object clone()
• 返回对象的一个克隆体。克隆体就是调用 clone方法的对象的一个拷贝。
• clone方法将返回一个新的对象,它的初 始状态与调用的clone方法的对象完全相 同。对新克隆对象的修改不会影响原对象 的状态。即x.clone()!=x;
13
编写clone方法的三个考虑
• return false; 7
2、public int hashCode()
返回对象的散列码。每个对象都有一个用于散列表的散列码。散 列码是由对象导出的一个整型值。散列码是没有规律的。如果x 和y是两个不同的对象,x.hashCode()与y.hashCode()基本上不 会相同。由于hashCode方法定义在Object类中,因此每个对象 都有一个默认的散列码,其值为对象的存储地址。如果重新定 义equals方法,就必须重新定义hashCode方法,以便用户可以 将对象插入到散列表中。
隆它自己,为此,必须重新定义clone方法,并将它声 明为public,这样才能够让所有的方法克隆对象。)
• 3、CloneNotSupportedException异常用于告
知类的clone方法不应该调用
14
创建可克隆类的最简单方式是声明它实现 Cloneable接口,然后再将clone方法重新声明
/home/soft01/Desktop/经典案例/幻灯片129.JPG /home/soft01/Desktop/未命名文件夹/幻灯片129.JPG
6
例如:• @Override
• public boolean equals(Object obj){
• if(obj==null) return false;
• Object类定义了一系列可供所有对象继承 的方法。这些方法分为两类:通用工具方法和 支持线程的方法。
2
通用工具方法: • public boolean equals(Object obj) • public int hashCode() • public String toString() • protected Object clone() • .....
3
1、public boolean equals(Object obj)
比较接受对象和obj引用对象的等同性,如果他们的值 相同则返回true,否则返回false。equals方法与值的 等同性有关。Object中equals的默认实现假定对象只 等于它自己,可通过if this==obj进行测试。 equals方法的特性: 1、if x!=null&x.equals(x) then true 2、if x.equals(y) true;then y.equals(x) true. 3、if x.equals(y)&y.equals(z) true;x.equals(z) true. 4、if x!=null &x.equals(null) then false 5、一致性
4
为什么要重写equals方法
• 1、基本类型用“==” • 2、引用类型与null比用“==” • 3、引用类型之间的比较用equals。
Object类中的equals方法判断的其 • 实还是地址。因此,判断两个对象值时须
要重写
5
理解与思考
• x.equals(y),当x和y所引用的对象是同一 类对象且内容相等时(并不一定是相同对 象)返回true,否则返回false.
• else if(obj instanceof Student){
•
Student st=(Student)obj;
•
return st.id==this.id;
• //return .equals(name); //调string类中的equals()比较
• }//类型+id 决定equals()
Object类及其方法
演讲人:胡望平 制 作:第五组
1
一、简介Object类
• Object类是类层次的根。所有类都直接地继承 Object类,所以一个Object类型的变量可以引 用任何对象,不论是类实例还是数组。
• 如果在类的声明中未使用extends关键字指明 其基类,则默认基类为Object类。
3、public String toString()
• 返回对象的字符串表示。以便用户能够 获得一些有关对象状态的基本信息
• 简单说就是利用字符串来表示对象。 • toString方法的object版本构造了一个
字符串,包含该对象的类名、一个@字 符和实例散列码的十六进制表示。
10
toStrinLeabharlann 的调用方式功能:使相等对象拥有相同的哈希码 尽量让不等的对象具有不同的哈希码。
8
例如: • public int hashCode(){
• //按照Hashcode约定,与equals()相关
• int type=41; //素数可以改变 • //return type*43+id; • return type*43+name.hashCode(); •}
• 1、必须实现Cloneable接口。(注意:
Cloneable接口的出现与接口的正常使用没有任何关系, 在这,接口只是作为标记(没有方法),它并没有指定 clone方法。)
• 2、通过Object 类实现的clone方法,它通过
把原对象的所有域拷贝到新对象中以完成简单 的克隆。(注:子类只能调用受保护的clone方法克
11
例如:
• public String toString(){ • return getClass().getName() + '@'
+ Integer.toHexString(hashCode()) • }//建议所有的类都重写toString()方法 • 这是Object类的toString方法。
• System.out.print/ln() 打印一个对象 其
• 实就是打印这个对象 toString 方法的返 回值。自动调用
• “+”连接字符串时,自动调用该对象类 的toString()方法:如 System.out.println(“info”+Person);
• 对象.toString();
12
3、protected Object clone()
• 返回对象的一个克隆体。克隆体就是调用 clone方法的对象的一个拷贝。
• clone方法将返回一个新的对象,它的初 始状态与调用的clone方法的对象完全相 同。对新克隆对象的修改不会影响原对象 的状态。即x.clone()!=x;
13
编写clone方法的三个考虑
• return false; 7
2、public int hashCode()
返回对象的散列码。每个对象都有一个用于散列表的散列码。散 列码是由对象导出的一个整型值。散列码是没有规律的。如果x 和y是两个不同的对象,x.hashCode()与y.hashCode()基本上不 会相同。由于hashCode方法定义在Object类中,因此每个对象 都有一个默认的散列码,其值为对象的存储地址。如果重新定 义equals方法,就必须重新定义hashCode方法,以便用户可以 将对象插入到散列表中。
隆它自己,为此,必须重新定义clone方法,并将它声 明为public,这样才能够让所有的方法克隆对象。)
• 3、CloneNotSupportedException异常用于告
知类的clone方法不应该调用
14
创建可克隆类的最简单方式是声明它实现 Cloneable接口,然后再将clone方法重新声明
/home/soft01/Desktop/经典案例/幻灯片129.JPG /home/soft01/Desktop/未命名文件夹/幻灯片129.JPG
6
例如:• @Override
• public boolean equals(Object obj){
• if(obj==null) return false;
• Object类定义了一系列可供所有对象继承 的方法。这些方法分为两类:通用工具方法和 支持线程的方法。
2
通用工具方法: • public boolean equals(Object obj) • public int hashCode() • public String toString() • protected Object clone() • .....
3
1、public boolean equals(Object obj)
比较接受对象和obj引用对象的等同性,如果他们的值 相同则返回true,否则返回false。equals方法与值的 等同性有关。Object中equals的默认实现假定对象只 等于它自己,可通过if this==obj进行测试。 equals方法的特性: 1、if x!=null&x.equals(x) then true 2、if x.equals(y) true;then y.equals(x) true. 3、if x.equals(y)&y.equals(z) true;x.equals(z) true. 4、if x!=null &x.equals(null) then false 5、一致性
4
为什么要重写equals方法
• 1、基本类型用“==” • 2、引用类型与null比用“==” • 3、引用类型之间的比较用equals。
Object类中的equals方法判断的其 • 实还是地址。因此,判断两个对象值时须
要重写
5
理解与思考
• x.equals(y),当x和y所引用的对象是同一 类对象且内容相等时(并不一定是相同对 象)返回true,否则返回false.
• else if(obj instanceof Student){
•
Student st=(Student)obj;
•
return st.id==this.id;
• //return .equals(name); //调string类中的equals()比较
• }//类型+id 决定equals()
Object类及其方法
演讲人:胡望平 制 作:第五组
1
一、简介Object类
• Object类是类层次的根。所有类都直接地继承 Object类,所以一个Object类型的变量可以引 用任何对象,不论是类实例还是数组。
• 如果在类的声明中未使用extends关键字指明 其基类,则默认基类为Object类。