- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象和类 类之间的关系 类之间的关系包括:关联、泛化、依赖、实现 关联关系又有两个特例:组合和聚合 * 本堂课结束,谢谢大家! * 面向对象是以现实生活中的人的思维和处理问题的方式来开发程序的,所以解决问题比较方便。 对象和类的关系。一定要说清楚。下面有图来表述。 职员是现实生活中存在的对象,我们把一些职员拿出来分析,发现职员都具有共同的属性和行为,那我们就能用一个概念来描述职员。即类。然后当我们来了一个新职员的时候,我们只要将这个概念的描述用在这个人身上,那么他就是一个职员。 类之间关系的分类。 关联关系又称包含关系,是指一个对象包含另一个对象的关系。例如订单和订单项之间的关系,班级和学生之间的关系等。 关联是有方向的,按关联双方的多少分为一对一,一对多,多对多三种。 我们的数据库叫做对象-关系型数据库,在数据库中常用关联关系来表示数据库中表的关系。 类之间的关系我们是用不同的线来表述的,注意 关联的两个特例,一个叫聚合,一个叫组成。 注意关系线 也叫继承关系。表示两个类是父子类,要求满足is-a关系,这在后面会详细讲解。 这个属于一种规范和实现的关系,接口和实现类之间就是这种关系,后面会详细讲解。 Jdk中有很多现有的类,我们前面已经用过了很多了,如String obj等。 既然java是面向对象编程,而对象又抽象成类,那么我们开发程序时候其实就是在写一个个的类。那么类该怎么写呢。 我们说类是具有相同属性和方法的对象的集合, (注意要代码演示) 对象在使用之前都要实例化,也就是new一个。 对象是引用类型,所以我们看内存中也是按照引用类型的方式来创建的。 因为我们使用了面向对象的封装的特性,所以我们异能调用方面,不能调用属性了。 自定义方法,和前面讲的setter/getter方法不一样,是用户自己定义的方法。这是重点。详细给学员讲解。 这里将this,this可以理解为类自己或者是本身。 使用反编译软件给学员演示。 注意的一点还是前面讲的对象实例化的步骤,三大步,代码块的运行先于构造方法。 过程: 首先初始化成员变量,赋默认的值。 然后初始化成员变量和块,赋初值。 最后执行构造方法。 总结其实就是在类实例化的时候先初始化成员变量,给其赋默认值。然后执行默认的无参数构造方法,进行赋值操作,然后再执行有参数的构造方法,赋值。 这里面和前面讲的成员变量的初始化是一样的。(指的是前两部,只是多了个块)只要学员记住成员变量的初始化先于构造方法就行了。 同一个类中,相同的方法名,不同的参数,我们称之为方法重载。一起以前我们就用过,比如system.out.println()就是。 Static修饰变量的时候因为是所有对象都共享的,那么若是这个改,那个改就可能出问题,所以我们一般在修饰变量的时候一般都和final一起使用,保证数据不变化。即常量。 Static修饰方法的时候,该方法不能调用非静态的成员,例如main方法不能调用别的没有static修饰的方法。 设计模式,这种类一般都用在例如:线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象等地方。就是所说的同一种问题的固定解决方式。 使用方法,两部 1、使用private休息构造函数,保证不能在外面实例化该类。 2、在该类内通过静态的方法得到该类的唯一的对象。(a、提供一个公有的静态方法访问该类的一个对象,b、这个对象是自己实例化自己得到的) 通过上面两步就能得到唯一的对象了。第一步保证了这个类不能被其他的类实例化。第二步保证了只能实例化一个对象。 单例模式会在spring中经常用到。这里做个知识的积累。 对象初始化过程 之前学过使用new关键字可以创建并初始化对象,那么当我们创建并初始化对象时,具体的初始化过程是怎样的呢? 其实当我们使用new关键字创建并初始化对象时,初始化对象总共分为三步 给对象的实例变量分配空间,默认初始化 基本类型默认初始化为0或0.0 引用类型默认初始化为null 成员变量声明时初始化、初始化块初始化 按从上到下定义的顺序 构造函数初始化 对象初始化内存模型 举例说明 通过示例5来分析一下对象初始化过程中对象的内存模型 当调用Person p2 = new Person(789,“wangwu”);时内存模型如下页所示 演示示例5:对象初始化过程 对象初始化第一步 给对象的实例变量分配空间、默认初始化 堆 id name 0 null p2 **** 栈 person对象 对象初始化第二步 成员变量声明时初始化、初始化块初始化 注意初始化顺序按从上到下的定义顺序 本例中先声明时初始化、后初始化块初始化 如果调换两者位置,结果会发生变化(讲师授课时注意演示) 堆 id name 123 456 **** p2 *
文档评论(0)