面向对象编程基础

上传人:101****457 文档编号:53775153 上传时间:2018-09-05 格式:PPT 页数:71 大小:210KB
返回 下载 相关 举报
面向对象编程基础_第1页
第1页 / 共71页
面向对象编程基础_第2页
第2页 / 共71页
面向对象编程基础_第3页
第3页 / 共71页
面向对象编程基础_第4页
第4页 / 共71页
面向对象编程基础_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《面向对象编程基础》由会员分享,可在线阅读,更多相关《面向对象编程基础(71页珍藏版)》请在金锄头文库上搜索。

1、第5章 面向对象编程基础,本章要点:对象及对象句柄类构造器、方法访问控制符静态关键字重载包注释及添加文档,5.1 对象,5.1.1 什么是对象有3个主要的特征:对象的行为(behavior)这个对象能做什么,也就是我们可以让这个对象完成什么样的功能。比如自行车可以载我们去想去的地方,节省体力。对象的状态(state)当通过一个操纵对象的方法时,对象所保持的一种包含特定属性的状态。比如我们可以通过扭转车头使自行车拐弯;刹车时,可以让自行车减速或停下来。对象的标识符(identity)可以通过标识符,区别具有相同行为或类似状态的对象。说到自行车,可以有很多种样子的,很多生产厂家的,都可以说是自行车

2、,那如何能区分我使用的这一辆呢?可以根据颜色、生产厂家及自行车号牌等与其他的自行车区分。,5.1.2 对象句柄变量名是内存地址(栈)的一个别名,对于基本类型来讲,它的值就是存放在这个内存地址的空间内,对于对象类型来讲,它的值是一个指向实际对象的一个地址(堆),而真正的对象是存放于堆中,我们就可以理解为:这就是一个对象的句柄。我们可以想像一下我们是如何用遥控器(对象句柄)操纵电视机(对象)的。只要你拥有这个遥控器,你就可以操纵电视机,一旦需要“换频道”或“增大声音”,你操纵的是遥控器(句柄),由遥控器去操纵电视机(对象),你也可以将这个遥控器交给其他的人(按址传递),别人也就有操纵这个对象的权力

3、了,无论有多少个人来操纵遥控器,电视机始终是唯一的(对象只有一个)。,此外,即使没有电视机,你仍然可以拥有遥控器,也就是说,你可以只有句柄,没有实际性的对象(电视机)与句柄(遥控器)相关联。例如:String str;这里只是拥有了一个对象句柄,句柄(str)并没有与任何对象内容相关联。这时,你去操纵句柄(str),并向它发送一条消息(操作),系统会提示你错误。所以我们建议读者在创建对象句柄时,一定不要忘记将句柄与实际的对象内容相关联(也就是对象变量的初始化)。,5.1.3 对象变量的初始化当创建一个对象句柄时,总是希望马上进行相应的初始化工作,也就是将句柄与内容关联在一起。在Java中,这是

4、一个非常简单的过程,它是通过new关键字来完成对象的创建过程的。可以理解为new就是新建的意思,它就是向内存堆中申请一个空间,将这个对象内容放到这里,然后将内容与对象句柄(存在于栈中)关联起来。是谁起到的作用呢?那就是等号(“=”),例如:String str = new String(“Hello“);String是Java中用到最多的字符串对象,它生成一个具体的内容“Hello”,我们把这个过程称为对象的实例化,并将这个实例与句柄(str)通过等号关联在一起。,5.2 类,5.2.1 类的含义类在Java中用class关键字表示,在第3章中我们已经强调过,要想声明一个类,必须使用class

5、关键字。类是对象的抽象,类是模板,类是一类事物经过抽象所共有属性的集合。比如说我们现在声明一个汽车类:public class Car 接着进行一个类的实例化,也就是说创建一个类的实例:new Car();/这样就产生了一个类的实例,也就是一个具体的对象一个类的实例是针对一个具体的对象的,它是一些具体属性的集合。,5.2.2 设计自己的类 1. 需求分析 (1)对于一个学生类(Student class),作为整个系统的最核心的类,我们希望它能包括学生公有的基本信息:学生姓名、学号、性别、出生年月、专业和籍贯等。 (2)作为学生类的实例,我们希望能通过设置或访问来修改这些学生的不同信息。,2.

6、 编写代码 例5-1 程序清单:StudentTest.java /* *学生类,包括学生的基本信息 */ public class StudentTest public static void main(String args)Student tom = new Student(“Tom“,“20020410“);tom.setStudentSex(“man“);tom.setStudentAddress(“America“);System.out.println(tom.toString(); class Student private String strName = “;/学生姓名pr

7、ivate String strNumber = “;/学号private String strSex = “;/性别private String strBirthday = “;/出生年月private String strSpeciality = “;/专业private String strAddress = “;/地址,public String toString()String information = “学生姓名=“ + strName + “, 学号=“ + strNumber;if( !strSex.equals(“) )information += “, 性别=“ + st

8、rSex;if( !strBirthday.equals(“)information += “, 出生年月=“ + strBirthday;if( !strSpeciality.equals(“) )information += “, 专业=“ + strSpeciality;if( !strAddress.equals(“) )information += “, 籍贯=“ + strAddress;return information; ,5.2.3 分析你的类1. 构造器通过关键字new来生成对象的实例,是通过构造器(constructor)来实现的。那究竟什么是构造器呢?简单的说,构造器

9、是同类名相同的特殊方法。让我们研究一下学生类的构造器:public Student(String name, String number)strName = name;strNumber = number;当构造一个学生类的实例时,学生类的构造器就被启动,它给实例字段赋值。,2. 方法提到方法(method)都是针对于某一个类的,也就是说方法都是类中的程序段。方法究竟是做什么用的呢?在探讨方法之前我们有必要先探讨一下另外一个概念封装。封装:所谓封装,就是把数据和行为结合在一个块中,对于对象的使用者隐藏了数据的实现过程,对象的使用者只能通过特定的方法访问类的实例字段。一个特定的对象是类的一个实例

10、,一个对象实例中的数据叫做对象的实例字段,操作实例字段的函数和过程称为方法。这个实例保持属于它本身的特定的值,这些值被称为对象的当前状态,任何想改变对象当前状态的动作必须通过调用对象的方法。对于封装,我们重点强调的是,绝对不允许方法直接访问除它自己的实例字段以外的其他的实例字段。程序只能通过对象的方法来与对象的数据发生作用。封装的实际作用就是一个“黑盒子”的作用,对于使用者,只需要知道对象的输出数据与输入数据,而不再去关心、也没必要关心数据的内部具体实现流程。对于封装的详细解析我们在本书后面有专门的介绍。,方法的定义:学生类中的方法都很简单,可以通过方法访问类的私有实例字段,因为任何实例字段都

11、可以被它们所在的类的方法访问。在一个类中,声明方法的格式如下:访问标识符 返回值类型 方法名(变量类型 变量名称,)比如在刚才我们声明的学生类中,声明了11个方法,我们就以籍贯为例来分析一下方法的实质。public String getStudentAddress()return strAddress;public void setStudentAddress(String address)strAddress = address;,设置器和访问器在Java API文档中,我们经常可以发现类似于上面学生类中的很多以get或set开头的方法。get方法只是查看对象的状态,并没有改变对象的任何状态

12、,例如: public String getStudentName() return strName; public String getStudentNumber() return strNumber; public String getStudentSex() return strSex; public String getStudentBirthday()return strBirthday; ,3. 使用多个源文件 (1)通过统配符来调用编译器javac Student*.java 或javac *.java这时,与统配符相匹配的所有源文件都会被编译成类文件。 (2)编译主文件也可以采

13、用如下的方式编译主文件:javac StudentTest.java,4. 访问控制符我们在前面几章中,经常看到在类、方法、实例字段前有public、private等,这就是访问控制符。所谓访问控制符,就是控制某个类、方法、实例字段被外界所能看到或访问到的范围。在Java中访问控制符主要有3个:public (“公开”)、private(“私有”)和protected(“受保护”)。在这里,我们重点探讨前两个,对于portected等到后面的章节再探讨。public:当使用关键字public时,就意味着在它后面的内容被声明为适用于所有人使用。在所有的访问控制符中,public的访问权限最大,那

14、它究竟是如何被访问的,我们先不做探讨,只有把它同其他控制符进行比较,我们才能真正体会到它的意义。,private:关键字private是访问控制符中被访问范围最小的控制符,它是私有的。它意味着,除非是个特定的类,并且只有从这个类的方法里才能访问到的,否则没有人能访问这个成员。比如在我们的学生类中: private String strName = “;/学生姓名 private String strNumber = “;/学号 private String strSex = “;/性别 private String strBirthday = “;/出生年月 private String st

15、rSpeciality = “;/专业 private String strAddress = “;/地址,例5-2 程序清单:StudentTest1.java /* *学生类,包括学生的基本信息 */ public class StudentTest1 public static void main(String args)Student1 tom = new Student1(“Tom“, “20020410“);Student2 jack = new Student2(“Jack“, “20030911“);System.out.println(tom.toString();Syste

16、m.out.println(jack.toString();System.out.println(“通过公开字段,修改实例字段值。“);/tom.strName = “唐僧“;jack.strName = “孙悟空“;System.out.println(jack.toString(); ,class Student1 private String strName = “;/学生姓名private String strNumber = “;/学号public Student1(String name, String number)strName = name;strNumber = number;public String getStudentName()return strName;public String getStudentNumber()return strNumber;public String toString()return “学生姓名=“ + strName + “, 学号=“ + strNumber; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号