java3面向对象程序设计.ppt_第1页
java3面向对象程序设计.ppt_第2页
java3面向对象程序设计.ppt_第3页
java3面向对象程序设计.ppt_第4页
java3面向对象程序设计.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象的程序设计,第3章,2,本章总体纲要,类、域、方法和实例对象 继承性 多态性 包(package) 封装性 关键字abstract、static、final和this 接口 内部类 变量作用域范围和参数传递方式 面向对象程序设计基本思想,3,3.1 类、域、方法和实例对象,目标 1 面向对象的概念 对象和类的概念 面向对象的三大基本特征:封装、继承、多态 2 类 类的定义 类的成员:成员变量和成员方法 构造方法 3 对象 对象的创建和引用 Java的垃圾回收机制,思考,开发一个在线考试系统,需要创建哪些类? 这些类的成员分别有什么?,5,1 面向对象的概念,对象,对象是具有某些特殊属性(数据)和行为方式(方法)的实体。 可以是有生命的个体,比如一个人或一只老虎。也可以是无生命的个体,比如一辆汽车或一台计算机。也可以是一个抽象的概念,如天气的变化或鼠标所产生的事件。,两个特征:属性(Property)和行为(Behavior) 如:一个人的属性有:姓名、性别、年龄、身高、体重等 行为有:唱歌、打球、骑车、学习等。,从众多对象中归纳出“类”,电视机A 品牌:飞利浦 型号:34寸高清 行为:开 关 选频道 调声音 颜色,抽象,电视机类 品牌: 型号: 行为:,从类实例化一个对象,电视机B 品牌:LG 型号:21寸纯平 行为:开 关 选频道 调声音 颜色,电视机C 品牌:东芝 型号:44寸液晶 行为:开 关 选频道 调声音 颜色,类的属性和行为-类的成员,从类实例化一个对象,属性,行为,成员变量(也称成员域),成员方法,类的成员,类,类是具有共同属性和行为的对象的抽象。 类可以定义为数据和方法的集合。 对象具有特殊属性和行为方式的实体。,类,对象,抽象,实例化,封装的实体=数据+方法,操作或行为,属性或状态,成员方法,成员变量,消息,单一对象的存在并没有多大的作用,只有多个对象相互作用才会完成复杂的行为。 对象和对象之间是通过传递消息来完成相互通信的。 一个消息由三方面内容组成: 1)消息的接收者,即消息的目标对象; 2)接收对象采用的方法; 3)执行方法所需用的参数(Parameters)。,例如:一辆自行车放在车棚中并没有什么用,当我们人骑 上它,并加速时才体现它的作用,其中接收者(自行车), 采用的方法(加速),所需的参数(上升到更高的档位)。,面向对象的基本特征,1.封装:将数据成员(Data Member)和属于此数据的操作方法(Operating Method),放在同一个实体(Entity)或对象中。 2.继承:父类定义(Define)一些通用的属性与行为,其子类继续使用。 3.多态:在同一个类中可有许多同名的方法,但其参数数量与数据类型不同,而且操作过程与返回值也可能会不同。,(1)模块化 (2)信息隐藏,(1)实现代码复用 (2)简化设计过程,解决其他语言中不能重名的问题,面向对象的基本特征:封装定义,面向对象的基本特征:封装举例,“学生对象”的内部数据: 个人基本信息(年龄、身高、家庭信息) 在校情况(专业,班级,宿舍,任职等) 选修课表 成绩清单(考试,课程设计,毕业设计成绩),入学/注册 修课/考试 查询成绩 毕业答辩,只能通过接口来操作对象,不能随意修改内部数据,面向对象的基本特征:继承,家电类(父类) 数据:功率 品牌 型号 方法:启动,停止,电视机类(子类) 数据:功率 品牌 型号 尺寸 方法:启动,停止 选频道 调色彩声音,冰箱类(子类) 数据:功率 品牌 型号 容量 功能 方法:启动,停止 调温度,开关门,自动拥有父类的数据,方法,继承,子类继承其父类的所有变量和方法 还可以增加自己需要的变量和方法,虚框:该类的对象,类继承的实现,被继承的类称为父类 继承父类的类称为子类 执行继承时,子类将获得父类的属性,并具有自身特有的属性。,Emoloyee类: name sex,Worker类: category ressAllowance,Officer类: empClass vehicle,工人类,继承了父 类的姓名和性别属 性外还包含类别和 是否有服装津贴属性,主任类,还包含 级别和是否配备 交通工具属性,职员类,具 有姓名和性 别两个属性,多继承:一个类有多个父类,即直接继承多个类,多继承,注: Java类只能有一个父类,面向对象的基本特征:多态,家电类(父类) 数据:功率 品牌 型号 方法:启动,停止,电视机类(子类) 数据:功率 品牌 型号 尺寸 方法:启动,停止 选频道 调色彩声音,冰箱类(子类) 数据:功率 品牌 型号 容量 功能 方法:启动,停止 调温度,开关门,启动电视: 显示图像,声音,启动冰箱:开始制冷,继承,多态:相同的消息被送到不同的对象 时有不同的实现,继承,18,2 类,19,类的定义,类的定义格式如下: 类修饰词 class 类名 extends 父类名 implements 接口名称列表 类体 ,extends关键字用于继承类,implement关键字用于实现接口,类的修饰符用于说明类的性质和访问权限,包括public、private、abstract、final。,其中public表示可以被任何其他代码访问,abstract表示抽象类,final表示最终类。,类体部分定义了该类所包括的所有成员变量和成员方法,class Animal String name; int age; public void eat() System.out.println(“Eating“); public void move() System.out.println(“Moving“); ,类的定义 举例,Animal的成员变量,Animal的成员方法,21,类的成员,从类实例化一个对象,成员变量(也称成员域),成员方法,22,成员变量,成员变量是类的属性,声明的一般格式为: 变量修饰符 变量修饰符:public、protected、private、和默认(friendly)。 成员变量,实例变量,类变量: 静态变量, 用static进行修饰,23,成员方法,成员方法定义的类的操作和行为,一般形式为: 方法修饰符 () 方法体 成员方法修饰符主要有public、private、protected、final、static、abstract和synchronized七种,前三种的访问权限、说明形式和含义与成员变量一致。 与成员变量类似,成员方法也分为实例方法和类方法。如果方法定义中使用了static ,则该方法为类方法。public static void main(String args)就是一个典型的类方法,24,类成员的常用修饰符及访问范围,25,思考,开发一个在线考试系统,需要创建哪些类? 这些类的成员分别有什么?,26,试题类(Testquestion类) 属性:包括试题内容、答案、用户选择的答案等。 方法:获取取试题、设置选择的答案、获取选择的答案、设置标准答案、获取标准答案、检查答案正确与否等。,类成员和实例成员,在类的定义中,成员变量和成员方法前面 带有static的为类属性和类方法; 不带static的为实例属性和实例方法。,类属性和类方法,class Animal int weight; String colour; static int count=0; Animal( ) +count; System.out.println(“The total number of Animal is:“+count); public void eat( ) System.out.println(“Eating“); public static void move( ) System.out.println(“Animal can Moving“); ,成员属性 成员方法,public class StaticTest1 public static void main( String args ) System.out.println(“The total number of Animal is:“+ Animal.count); Animal.move(); Animal a1=new Animal(); Animal a2=new Animal(); 运行结果为: The total number of Animal is:0 Animal can Moving The total number of Animal is:1 The total number of Animal is:2,class Animal int weight; String colour; static int count=0; Animal( ) +count; System.out.println(“The total number of Animal is:“+count); public void eat( ) System.out.println(“Eating“); public static void move( ) System.out.println(“Animal can Moving“); ,与类属性和类方法相比较 ,实例属性和实例方法必须在实例化变量之后才能使用, 将上例中Animal.move()换成Animal.eat(), 结果如何?为什么?,实例属性和实例方法,eat()是实例方法,只能由类的对象调用 也就是只能a1.eat(),或a2.eat(),31,构造方法,构造方法在创建新的实例对象时起作用 构造方法通常用来初始化实例对象,例如: 初始化成员域或设置工作环境,构造方法,构造方法名称与类名称相同 构造方法没有返回类型 其任务是在创建对象时初始化其内部状态 若无定义系统默认有一个无参构造方法,构造方法,class Point int x,y; Point( ) /不带参数的构造方法 x=0; y=0; Point(int ix, int iy) /带参数的构造方法 x=ix; y=iy; void move( int newX, int newY ) x = newX; y = newY; ,构造方法没有返回类型,构造方法名与类名相同,构造方法的三个基本特点 父类和子类的构造方法有一定关联 (参见课本P62),34,默认的构造方法,如果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。 -这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员变量 - 默认值: 基本数值类型: 0; boolean: false; 引用数据类型: null -最好自己写构造方法 一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。,35,3 对象,对象的创建,对象的声明和创建 类名 对象名; /声明 对象名=new 类名(参数);/创建 (2)对象的使用 对象名.成员变量名; 对象名.成员方法名(参数列表); (3)对象的销毁 自动垃圾回收机制周期性的释放无用的对象。,(1)对象的创建,第一步:进行对象的声明。 一般形式为: ; 例如: Animal dog; 第二步:实例化对象,通过运算符new实现 一般形式为: =new ; 例如: dog = new Animal( ) ; 以上两步也可合并: =new ,38,对象的创建(举例),对象的声明只是创建变量的引用,并不分配内存,要分配实际内存空间,必须new关键字。,39,(2)对象的引用,对象创建之后,通过“”运算符用于访问对象中的成员变量和成员方法。 一般形式为: 由于类变量和类方法不属于某个具体的对象,因此我们也可以直接使用类型替代对象名访问类变量或类方法。 例如: Animal.age=3; Animal.eat( );,实例变量成员和实例方法成员只能通过对象来引用 例如,Point为类,p为Point的对象,p调用类的方法move格式如下: p.move(30,20); 同样 ,也可以用new生成对象的引用 ,然后直接调用它的方法 ,如: new point().move(30,20);,(2)对象的引用,(3)对象的销毁,有些面向对象语言保持对所有对象的跟踪,所以需要在对象不再使用的时候将它们从内存中清除。 JAVA当对象不再被使用的时候将其清除,这就是所谓的“垃圾回收机制”。 JAVA的垃圾收集器:它周期性地自动将不再被引用的对象从内存中清除。 两个有关垃圾回收的成员方法: gc( ) finalize( ) 参见课本P64和P65例,42,思考:,实现考试系统中所需要的试题类(Testquestion类) 属性:包括试题内容、答案、用户选择的答案等。 方法:获取取试题、设置选择的答案、获取选择的答案、设置标准答案、获取标准答案、检查答案正确与否等。,43,定义Testquestion类,class Testquestion private String questionText = “; /试题内容 private String standardKey;/答案 private String selectedKey; /选择的答案 public String getQuestion() return questionText ; /获取试题 public void setQuestion(String s) questionText = s; public String getSelectedKey() /获取选择的答案

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论