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

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

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

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

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

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

第4讲面向对象特征(1)4.1基本概念面向对象(ObjectOriented-OO) 面向对象编程(ObjectOrientedProgramming-OOP) 面向对象是一种软件开发的方法,“面向对象的分析与设计”(OOA&OOD—研究生课程) 第一个面向对象的语言:Simula-67 第一个成功的面向对象编程语言:Smalltalk C++,JAVA,C#,PERL等 用客观世界中描述事物的方法来描述程序中要解决的问题 万事万物都是对象 程序便是成堆的对象,彼此通过消息的传递,请求其他对象进行工作五个基本概念 对象 类 封装性 继承性 多态性对象(object) everythingisanobject 现实世界的对象:桌子、书、自行车、电视、狗、文件、表格、按钮、窗口 对象包含两个特性 状态:指对象本身的信息(内部信息/内部变量) 行为:实现对信息的访问/对象的操作 标志:代表对象的标识符 山地车的状态(两个车轮、一些齿轮、速度、挡数),行为(刹车、加速、减速和换挡) 书包含很多信息,拥有访问所包含信息的方法,一页一页的看,通过目录找到感兴趣的内容对象(object) 状态变量(variables) 行为方法(method) 对象就是变量和相关方法的软件集合 一个对象可以由其他对象组合而成,窗口(按钮,菜单条,文本框,状态栏等) 程序就是对象的集合,对象之间相互交互和通信完成任务 搭积木 Aprogramisabunchofobjectstellingeachotherwhattodobysendingmessages类(class) 亚里士多德:theclassoffishesandtheclassofbirds 现实世界中,存在很多同类的对象,很多桌子、书、自行车 一种原型,一种抽象,一种共性,一个模板 Everyobjecthasatype 实例(instance),某类对象的一个特定实体,类是对象的一个抽象 表格(类)填入不同的个人信息不同的对象封装性 对象本身的数据得到保护/隐藏 其他对象仅仅需要知道对该对象的访问方法(接口/interface)即可 好处 模块化--每个对象的源文件可以是相互独立的,可以被不同的程序调用,每个对象是一块积木,可以搭建不同的形状 信息隐藏--通常定义一个公共接口/方法实现对对象的访问,可以调整对象的私有信息和方法,而不会对其他调用它的对象产生影响 可重用性 黑盒子 电脑的DIY 喷墨打印机,硒鼓坏/彩色硒鼓继承性 为什么会有继承? 建立一个类后,发现另一个新的类有相同的特性,两个选择:重新定义一个新的类;在已有类的基础上,修改(加加/减减) 父类和子类,子类继承(拥有)父类所有的数据和方法,同时子类可以有新的数据和方法,“青出于蓝,而胜于蓝” 树型结构(层次化结构) 根(基类)继承性继承性 多重继承多态性 表现在继承中方法的重写 子类从父类继承(extends扩展)而来 多个子类同属一个父类,所有子类有相同的父类 继承父类的方法 在不同的子类中有不同的表现形式 表现在用一个类中方法的重载 多态性 多态性在继承中的表现多态性多态性程序是对象的集合,而对象是类的实例化 源程序就是一个个的Java类 Java本身提供的类(核心API) 见Java文档中描述 程序员可以对其进行调用 j2sdk1.4.1_01\jre\lib\rt.jar(22.4MB) 程序员自己定义的类类的定义格式 [类的修饰符]class类名[extends父类名]implements[接口名]{ 类型 成员变量1; 类型 成员变量2; …… ………… 类型 成员方法1(参数1,[参数2,…]){ 方法体; } 类型 成员方法2(参数1,[参数2,…]){ 方法体; } …… ………… }类的定义格式 [类的修饰符]class类名[extends父类名][implements接口名]{ …… ………… } 类的修饰符 public:公共类,可以被其他类所使用,declaresthattheclasscanbeusedbyanyclassregardlessofitspackage(无任何限制) 无修饰/默认说明:aclasscanbeusedonlybyotherclassesinthesamepackage(仅仅能在同一个包中的其他类引用) abstract:declaresthattheclasscannotbeinstantiated(宣布该类不能被实例化) final:declaresthattheclasscannotbesubclassed(宣布该类不能有子类)类的修饰符 final--Declaresthattheclasscannotbesubclasse