全国咨询热线:400-009-1906

全国24小时免费热线

400-009-1906

关于Java中类、对象之间关系的解析

时间:2017-10-16 17:20:10   来源:尚学堂   阅读:
  学习Java一定要把类、对象的知识学好,程序员培训中会发现老师在这方面分配的时间比例是很高的。一定要区分类和对象,那么究竟什么叫做类?什么叫做对象?类是一类事物的一个抽象,具有共同特征的一类事物的一个抽象。对象是这个类具体的某一个实例,所以以后说实例(instance)或者说对象(object)指的是同一回事。
综合来说,类和对象之间的关系有以下几类
  一.关联关系(最弱的一种关系)
   说明: http://upload-images.jianshu.io/upload_images/1807893-f360356e77ce5b51.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
  类和类之间是有关系的,如学生和老师这两个类,老师可以教学生,学生可以向老师学习。这就是他们之间的关系。关系和关系之间是不同的,你和你老婆的关系和你和你其他女朋友的关系是不能混为一谈的。关系最弱的一种关系叫关联关系。关联关系反应到代码上往往是一个类的方法里面的参数是另一个类的具体的某一个对象,比如教授教研究生,教哪个研究生,教是教授这个类里面的一个方法,某个研究生是研究生这个类里面的一个具体的对象。关联关系是最弱的一种关系,咱们两个类之间有关系,或者两个对象之间有关系,但关系不是很紧密。
  二.继承关系(比较强的一种关系)
  
说明: http://upload-images.jianshu.io/upload_images/1807893-eac6be44344cdf1c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
  继承关系封装了这样一种逻辑:“XX是一种XX”,只要这东西能说通了,就可以考虑用继承关系来封装它。如:游泳运动员从运动员继承,游泳运动员是一种运动员,这能说得通,所以游泳运动员就是从运动员继承过来的,游泳运动员和运动员就是一种继承关系。学生是一个人,学生从人继承,老师是一个人,老师也从人继承,学生是一种老师,这说不通,所以学生和老师就不存在继承关系。所以将来做设计的时候要分清继承关系很简单,你只要说通这么一句话:“XX是一种XX”。OK,那他们之间就是继承关系。篮球运动员是一种球类运动员,这说得通,所以篮球运动员从球类运动员继承,这样继承很有可能会产生一棵继承树,运动员派生出来,派生出来的意思是游泳运动员这个类、球类运动员这个类、射击运动员类从它继承,相当于运动员派生出来了这些个不同的运动员,包括游泳的,球类的,射击的。球类的再派生足球的,篮球的,排球的。这就是一棵继承树,不过这棵树是比较理想化的情况,只有一个根节点。但实际当中,我们真实世界当中的继承关系不一定只从一个类继承,一个类可能从多个类继承过来,比如说:金丝猴从动物这个类继承,这很正常,但我还有另外一个专门的类:“应该受到保护的东西”,这也是一个类,金丝猴应该受到保护,所以金丝猴是一种应该受到保护的东西。所以金丝猴从“应该受到保护的东西”这个类继承过来。所以在现实情况当中,一个类完完全全有可能从多个不同的类继承,C++正是因为想封装这种继承关系,所以C++存在多重继承。
  三.聚合关系(整体和部分)(比较强的一种关系)
  
说明: http://upload-images.jianshu.io/upload_images/1807893-f7de14a4763147e0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
  什么是聚合?聚合就是一个整体与部分的关系。我们说“XX是XX的一部分”,只要说得通,那么他们之间的关系就是聚合关系,队长是球队的一部分,队员是球队的一部分。所以队长和球队是聚合关系,队员和球队也是聚合关系。脑袋是人的以部分,身体和胳膊也是人的一部分,因此脑袋,身体和胳膊与人都是聚合关系。聚合关系分得再细一点的话就可以分成聚集关系和组合关系,比如球队、队长,队员,这三者是聚集关系,假如这个队长既是足球的队长,同时也是篮球的队长,一个人分属两个不同的球队,这是可以的,球队与队长之间没有我离不了你,你离不了我这种情况,所以如果分得更细的话,这种就叫做聚集关系。还有一种情况叫组合,组合说的是咱们俩密不可分,我是你必不可少的一部分。一个人的脑袋不可能既属于你又属于别人,身体也一样,不可能既属于你又属于别人。所以你的身体,脑袋和你是密不可分的,这是一种更加严格的聚合关系,专门给它取了个名字叫组合。
  四.实现关系
  
说明: http://upload-images.jianshu.io/upload_images/1807893-e879c066bdf9c0ca.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
  作为父类来说,我觉得我应该具有这样一个方法,但我不知道怎么去实现,谁去实现,我的子类去实现,这就是实现关系。和实现关系息息相关的还有一种关系叫多态。
  五.多态
   说明: http://upload-images.jianshu.io/upload_images/1807893-6821aea22199e910.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
  说完对象和类之间的种种关系,那么Java与面向对象又需要注意什么呢?在 Java代码实践中又如何运用呢。其实参加过程序员培训的同学都知道,Java与面向对象可以说是学习Java的关键,这是因为在Java中,对象就是Java程序的核心,在Java程序中万事万物皆对象。
  
说明: http://upload-images.jianshu.io/upload_images/1807893-515aab0a7a42f717.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
  对象和类是分不开的,必须首先定义类才能有对象。首先定义方法才能调用。对象是JAVA里面的核心,做任何东西你首先都得给我造出一个对象才能做。静态属性简称属性,也叫成员变量,以后说属性或者说成员变量它们指的都是同一回事。
  整个类可以看作是静态的属性还有方法他们之间的一个综合。怎么抽象出一个类的概念,还是那句话,你必须抽象出两个方面来,第一方面是看他们的静态属性,他们有哪些成员变量,第二方面是看他们的有哪些方法。
  那么在写JAVA程序时,我们一上来写的就是public class(声明一个类),在这个class里面我们写的是成员变量和方法。
每一个JAVA里面的class(类)都对应了我们现实生活中某一类事物的一个抽象。从这个意义上来讲,JAVA里面的每定义一个类实际上就相当于一种新的数据类型。就跟int ,float, String等一样,不过是一种新定义的类型而已。具体实践起来就不是一句两句能说得清楚的了,需要大家在做项目过程中细细体会。
  其实,面向对象编程,之所以留下就是因为对象和类的特性,是的做软件苦苦追求的一种境界,可重用性(reusable),可扩展性,能够更好的发挥。如果是面向过程,一般情况是属性和方法它们是分开的,他们不是聚合的关系,不是合在一起的,这样要复用起来比较麻烦,复用的层次只是局限于方法这个层次上,而参加程序员培训通常都是面向对象的语言比较热门,你也会发现面向对象的优势太明显了,它是把属性和方法综合在一个里面。综合在一起复用的时候是整个对象进行复用。所以面向对象会更加容易让我们达到可重用性,提升效率。
分享:0
  • 北京校区
  • 上海校区
  • 广州校区
  • 深圳校区
  • 长沙校区
  • 四川校区
  • 武汉校区
  • 郑州校区
  • 山西校区
北京海淀区校区(总部):北京市海淀区西三旗桥东建材城西路85号神州科技园B座尚学堂
北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
咨询电话:400-009-1906 / 010-56233821
面授课程: JavaEE培训大数据就业班培训大数据云计算周末班培训零基础大数据连读班培训大数据云计算高手班培训人工智能周末班培训
人工智能+Python全栈培训H5+PHP全栈工程师培训视觉设计培训
上海尚学堂松江校区地址:上海市松江区荣乐东路2369弄45号绿地伯顿大厦2层
咨询电话:021-67690939
面授课程: JavaEE培训人工智能+Python全栈大数据培训云计算&大数据培训前端培训PHP培训全栈工程师培训
广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
咨询电话:020-2989 6995
面授课程: JavaEE培训人工智能+Python全栈大数据培训云计算&大数据培训PHP培训全栈工程师培训
深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
咨询电话:0755-23061965 / 18898413781
面授课程: JavaEE培训人工智能+Python全栈大数据培训PHP全栈工程师培训产品经理培训
长沙学区地址:长沙市岳麓区麓源路湖南电子商务基地5楼(公交车站:六沟垅)
咨询电话:0731-83072091
面授课程: JavaEE培训人工智能+Python全栈大数据培训全栈工程师培训产品经理培训
四川学区地址:成都市高新区锦晖西一街99号布鲁明顿大厦2栋1003室
咨询电话:028-65176856 / 13880900114
面授课程: JavaEE培训大数据培训全栈工程师培训产品经理培训
武汉学区地址:湖北省武汉市江夏区江夏大道26号 宏信悦谷创业园4楼
咨询电话:027-87989193
面授课程: JavaEE培训大数据培训全栈工程师培训产品经理培训
郑州学区地址:金水区东风路经三路北100米注协大厦10楼
咨询电话:0371-55177956
面授课程: JavaEE培训大数据培训全栈工程师培训产品经理培训
山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702
咨询电话:0354-3052381 / 18903441162
面授课程: JavaEE培训大数据培训全栈工程师培训产品经理培训
Java培训 - Android培训 - ios培训 - hadoop培训 - 专业IT培训机构
Copyright 2006-2018 技术支持:太原市正觉教育科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
媒体联系:18610174079 闫老师