对象的关联关系
我们现在有了一些面向对象的基本认知了,至少包括:需要在问题域找
对象的三种关联关系
-
has-a关系
顾名思义:有一个
指的是在一个对象的内部“拥有”另一个对象
-
在语法上,has-a关系就是把一个对象设计为另一个对象的属性
eg:
-
关联分单向关联和双向关联
- 单向关联:a has b 或 b has a
- 双向关联:a has b 且 b has a
-
把对方设计为自己的属性后,有一个特点,那就是在当前对象的所有方法中可以访问到关联对象。换句话说,两个对象的生命周期是保持一致的,这就是所谓的你中有我,我是你的一部分。
-
-
use-a关系
用一个
指的是在一个对象的某个方法当中“使用”另一个对象
- 在语法上,use-a关系是把一个对象设计为另一个对象的某个方法的局部变量
- 该变量可以通过参数传递进这个方法,也可以在方法内部自己new一个,两者无论采用哪种方式都是use-a关系。因为参数也好,自己内部声明定义也好,都是方法内部的局部变量,方法结束,局部变量消失,关系解出。
-
is-a关系(继承章节讲解)
是一个
指的是一个对象是另一种对象的特例
this关键字
学到现在,我们发现在一个类当中定义的属性和行为,都需要用“对象.”的方式访问,这种语法的规定是有道理的,因为同一个类可以产生多个对象,我们必须明确告知是哪个对象,或者调用哪个对象的方法。
在类的内部方法中,访问当前类的属性或调用自己的某个方法,也有一个默认的对象---用this表示。这个this代表的是”当前对象“,相当于”我“的含义,那么谁是当前对象呢?谁调用这个方法谁就是”当前对象“
-
利用“this.”,后面可以访问自己属性和自己的行为。
有同学可能会说:this用处不大,因为根据作用域,就算不写this也可以访问本类的属性或调用本类的方法。但是我们建议大家在书写代码的时候只要是访问本类属性或本类方法就加上"this."。原因:
-
利用IDEA工具,书写上"this."以后,可以自动联想出本类的属性和方法,提高编程速度;
-
它可以区分局部变量和属性重名的情况;
-
对于"this."的使用,我们要分情况:
- 如果出现局部变量和全局变量重名,我们又需要特指全局的时候,那么就一定要用"this.";
- 如果没有出现上面的这种情况,加不加"this."就看程序员个人的使用习惯,或你服务的公司的代码规范了。
包
当我们的程序越来越大,里面包含的类越来越多,那么我们就需要一种结构能够帮助我们分门别类的存放这些类,以达到更好的管理。于是,有了“包”的概念。
-
包的命名规范:全小写
包在本质上大家就把它想成是专门用来存放java类的文件夹。当一个java类被放入到某个包当中的时候有以下几个特点:
-
在这个类的最高处要增加一句包申明的代码,使用关键字"package",后面跟上包的名字。
比如: package com.lovo.test;
-
在默认情况下,一个java类只能访问来自于同一个包的其他java类。如果需要访问其他包的类,那么需要使用关键字“import”,把那个类导入进来。
比如: import com.lovo.practise.Car; 可以使用 import com.lovo.practise.*; 导入practise包下面所有的java类,但是不建议这么做,最好的方式是需要用谁才导入谁。
-
在IDEA工具中,具有多种创建包或创建类的方式,需要大家逐步的熟悉。
\