第五章:内部类与异常amp;amp;第六章:多线程.pdf

第五章:内部类与异常amp;amp;第六章:多线程.pdf

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章:内部类与异常

第五章 面向对象之内部类与异常 (注:从这一章开始需要查阅java 的API文档) 一、Object类 Object类 java 中定义的一个特殊类,java 中所有的类都直接或间接继承自Object,也就 说它 java 中的 “万物之源”。位置:java.lang.Object。 万物之源看上去是个非常抽象的概念,但在java 中Object类并不是抽象类,它是可以创建 对象的。 Object类中定义的是在java 的世界观中所有对象都具备的共性属性和功能。 当前需要了解的 Object类中定义的两个方法:equals和toString。其他的方法在讲到多线 程、集合时会再补充。 (1)equals方法:比较两个对象是否相等。实际是对两个对象地址值的比较。 子类可以复写这个方法以重新定义比较规则(如一个学生类,按照里面定义的姓名和年龄来 判断两个学生是否是同一个人,这时学生类中就可以复写equals方法)。 补充内容:equals方法和比较运算符 “==”的区别和联系 联系:两者都是用于两个数据的比较,返回值都是boolean类型。 区别:“==”可以比较基本数据类型和引用数据类型。对于基本数据类型是值比较,对于引 用数据类型是地址比较。 equals方法只能比较引用数据类型。默认比较地址值,可被重写后比较属性值。 (2)toString方法:将对象信息整理成字符串。 此方法实际的返回结果是:对象所属类名@对象地址。 toString方法会调用同属于Object类中的hashCode()方法和getClass()方法以获取类名和计算 内存地址。 子类可以复写这个方法以重新定义整理对象信息的规则(如一个学生类,按照里面定义的姓 名、年龄和成绩来整理学生信息,这时学生类中就可以复写toString方法)。 (3)补充内容:getClass方法:返回该对象所属的类对象(即字节码文件对象)。 Class类是用于描述字节码文件的类,其中的方法在补充反射内容时会使用。 二、内部类 1.内部类概述 有一个类A,再在A 的内部定义一个类B,就称B A 的一个内部类,A B 的外部类。 内部类也称为内置类或嵌套类。 为描述方便,在与A平级的位置定义一个类C (C与A没有任何关系),则可以称C B 的外部其他类。 内部类的出现是用于描述事物之间的“构成”关系的。构成关系是指一个复杂的事物由多个 简单的事物所构成,两者相互依存,不可分离。如人体与心脏,电脑与CP 。 以电脑与CP 为例,两者都是事物,都可以用类描述,两者之间的关系是:后者是前者的 一个构件。电脑没有CP 就不能运行,而CP 离开电脑就只是一块普通的芯片。这种关系 体现在java 当中就是:CP 类是电脑类的一个内部类。 classComputer{classCPU{}} 2.内部类的特点 (1)内部类可以定义在外部类的成员位置上(与其他的成员变量和成员函数平级,所谓的 成员内部类),也可以定义在局部位置上(即定义在外部类成员函数的里面,所谓的局部内 部类)。 (2)内部类定义在外部类的成员位置上时: 1)内部类可以直接访问外部类中的成员,包括私有成员。而在外部类中访问内部类成员就 要建立内部类的对象后再访问。(之所以内部类可以直接访问外部类中的成员,是因为内部 类中隐式持有了一个外部类的引用,格式:外部类名.this.) 比如,在类A 中定义一个intx=3,则在B 中可以直接打印x 的值。反过来,在类B 中再定 义一个inty=4,则在A 中打印y 的值需要这样写:System.out.println(newB().y)。 2)在外部其他类中要访问内部类的成员时,需要先按固定格式建立内部类的对象后再访问。 固定格式: 外部类名.内部类名 内部类对象名 =new 外部类名(参数).new 内部类名(参数) 比如,在类C 中要打印y 的值,需要这样写: inty1=newA().newB().y,再打印y1。当然写成System.out.println(newA().newB().y)也可以。 3)此时内部类可以被private和static修饰。 内部类被private修饰后,相对于外部其他类而言就是隐藏的,无法直接访问(但可以通过 在外部类中定义公有访问方法进行访问),实现了封装。(注意:可以被private修饰是内部 类的特点,外部类和外部其他类都不具备) 内部类被static修饰后就变成了静态内部类。静态内部类比较恶心的东西较多,另开一点叙 述。 (3)内部类定义在外

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档