预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共32页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Java高级类特性 面向对象有三大特征,即封装、继承、多态。 一、封装 封装这个词听起来好象是将什么东西包裹起来不要别人看见一样,就好象是把东西装进箱子 里面,这样别人就不知道箱子里面装的是什么东西了。其实JAVA中的封装这个概念也就和这个 是差不多的意思。 封装是JAVA面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象 的全部属性和全部服务结合在一起,形成一个不可分割的独立单位;以及尽可能隐藏对象的内部 结构。也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们 做的这个东西的内部结构了。 封装的功能 -隐藏对象的实现细节 -迫使用户去使用一个界面访问数据 -使代码更好维护 封装迫使用户通过方法访问数据能保护对象的数据不被误修改,还能使对象的重用变得更简 单。数据隐藏通常指的就是封装。它将对象的外部界面与对象的实现区分开来,隐藏实现细节。迫 使用户去使用外部界面,即使实现细节改变,还可通过界面承担其功能而保留原样,确保调用它 的代码还继续工作。封装使代码维护更简单。 二、继承 1、继承 在面向对象世界里面,常常要创建某对象(如:一个职员对象),然后需要一个该基本对象 的更专业化的版本,比如,可能需要一个经理的对象。显然经理实际上是一个职员,经理和职员 具有is-a的关系,经理只是一个带有附加特征的职员。因此,需要有一种办法从现有对象来创 建一个新对象,这个方式就是继承。现实中的事务,只要具有is-a的关系,在java中都可以 用继承表示。 “继承”是面向对象软件技术当中的一个概念。如果一个对象A继承自另一个对象B,就 把这个A称为“B的子对象”,而把B称为“A的父对象”。继承可以使得子对象具有父对 象的各种属性和方法,而不需要再次编写相同的代码。在令子对象继承父对象的同时,可以重新 定义某些属性,并重写某些方法,即覆盖父对象的原有属性和方法,使其获得与父对象不同的功 能。 1 2、extends关键字 Java快车免费试学 在Java中使用extends关键字来表达继承的关系,比如:经理这个类继承雇员这个类, 示例如下: publicclassEmployee{ Stringname; DatehireDate; DatedateOfBirth; StringjobTitle; intgrade; ... } publicclassManagerextendsEmployee{ Stringdepartment; Employee[]subordinates; ... } 在这样的定义中,Manager类被定义,具有Employee所拥有的所有变量及方法。所 有这些变量和方法都是从父类的定义中继承来的。所有的程序员需要做的是定义额外特征或规定 将适用的变化。 注意:这种方法是在维护和可靠性方面的一个伟大进步。如果在Employee类中进行修改, 那么,Manager类就会自动修改,而不需要程序员做任何工作,除了对它进行编译。 3、父子类的初始化顺序 在Java编程语言中,对象的初始化是非常结构化的,这样做是为了保证安全。在前面的模 块中,看到了当一个特定对象被创建时发生了什么。由于继承性,对象被完成,而且下述行为按 顺序发生: (1)存储空间被分配并初始化到0值 (2)进行显式初始化 (3)调用构造方法 (4)层次中的每个类都会发生最后两个步骤,是从最上层开始。 Java技术安全模式要求在子类执行任何东西之前,描述父类的一个对象的各个方面都必须 初始化。因此,Java编程语言总是在执行子构造方法前调用父类构造方法的版本。有继承的类在 运行的时候,一定要记得:初始化子类必先初始化父类,这是Java程序的一个基本运行过程。 比如: 1.publicclassTestextendsParent{ 2.privateStringname; 2 3.privateintage; 4.publicTest(){ 5.name="Tom"; 6.age=20; 7.} 8.publicstaticvoidmain(String[]args){ 9.Testt=newTest(); 10.System.out.println(t.name+"的年龄是"+t.age); 11.} 12.} 13.classParent{ 14.privateintnum=1; 15.publicParent(){ 16.System.out.println("现在初始化父类"); 17.} 18.publicvoidtest(){ 19.System.out.println("这是父类的test方法"); 20.} 21.} 上述类的基本运行顺