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

下载本文档

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

文档简介

1,第二章 面向对象(OO) 程序设计基本概念,2,本章总体纲要,面向对象程序设计的基本思想 对象与类 封装性 继承性 接口 多态性,3,实体,抽象数据类型,类,对象,4,面向对象程序设计是使用类和对象将现实世界中真实的或抽象的实体在程序中建立模型。,面向对象程序设计,5,面向对象程序设计的基本思想?,面向对象程序设计(OOP) 传统:面向过程 对象例子 汽车:车轮、发动机、方向盘、座椅、车门和窗 狗:动物的子类 将数据(属性)和方法(行为或功能)封装到类(classes)中 对象(objects): 类的实例或类本身 三个基本特性:封装性、继承性和多态性,6,面向对象程序设计的基本概念,什么是对象(Object) 什么是消息(Message) 什么是类(Class) 什么是继承(Inheritance) 什么是接口(Interface) 什么是多态,7,对象(Object)的概念,软件对象是现实对象在程序中的模型。 现实世界对象的两个特征:状态(state)与行为(behavior). 软件对象也具有状态与行为: 状态:以一个或多个变量保存 行为:用方法实现行为,8,对象(Object)的概念,定义:对象由变量与相关的方法结合起来构成的。,9,对象实例,一个特定的对象称为实例。,10,什么是消息,对象之间通过发送消息进行交互与通信。,11,消息的构成,消息由三部分构成: 接收消息的对象 方法名称 方法的参数,12,消息示例,13,消息机制的好处,对象的行为是通过它的方法表达的,所以消息传递支持对象之间的所有交互。 相互交换消息的对象可以在不同的进程,甚至在不同的机器上。,14,什么是类(class),A class is a blueprint, or prototype, that defines the variables and the methods common to all objects of a certain kind. 一个类是一个蓝图或样板,它定义了某一特定类的所有对象都具有的变量与方法。,15,类的定义,类的定义格式如下: 类修饰词 class 类名 extends 父类名 implements 接口名称列表 类体 ,16,类的结构,17,类示例-自行车,18,类的实例化,19,多个类组成的程序,很多Java程序需要多个类完成一项任务 一个文件一般只含有一个类 每个文件的长度一般不要太长 最长一般不要超过2000行,20,类中的变量与方法,变量 实例变量(instance variable) 包含特定对象的状态 类变量(class variable) 由类的所有实例共享 方法 实例方法(instance method) 通过实例进行访问的方法。 类方法 (class method) 通过类进行调用的方法。,21,方法定义,与C+程序不同的是: 每个方法都必须隶属于某个类 方法定义的格式: 方法修饰词 返回类型 方法名(方法的参数列表) 方法体 返回类型: 返回数据的数据类型 除了构造方法,一般要求返回类型: 要么为void ,要么为某种数据类型int、byte、float或String 最多只能返回一个值 方法名: 任何一个合法的标识符 参数列表: 用逗号(,)分隔开,22,构造方法,构造方法在创建新的实例对象时起作用 构造方法通常用来初始化实例对象,例如: 初始化成员域或设置工作环境 构造方法的特点: 与类同名 没有返回值 可以含有多种构造方法(重载) 但必须具有不同的参数列表,23,默认的构造方法,如果没有显式地定义类的构造方法,则系统会为该类定义一个默认的构造方法。该构造方法不含任何参数。 这个默认的构造方法首先调用其父类的不含任何参数的构造方法,然后初始化新生成的实例的各个成员域变量 默认值: 基本数值类型: 0; boolean: false; 引用数据类型: null 最好自己写构造方法 一旦在类中定义了构造方法,系统就不会再创建这个默认的不含参数的构造方法。,24,封 装,含义:对象的变量置于对象方法的包裹之中,被对外隐藏。 优点: 模块化:不同对象代码之间有一定独立,对象可以 在系统中方便移动。 信息隐藏:保证修改对象信息时,不会对访问它 的对象产生影响。,25,类成员的封装性,成员(域或方法)的访问控制方式: 1) public 2) private 3) protected 4) default(缺省方式),26,什么是继承,27,什么是继承,子类 A class that is derived from a particular class. 从某个特定类派生出来的类。 父类 A class from which a particular class is derived. 派生出某个特定类的类。,28,继承的含义,子类继承父类的状态与方法。 子类可以增加新的变量和方法。 子类可以重写(Override)继承来的方法。 注:继承关系可以有多层,子类要继承它所有父类的方法与状态。,29,继承性的实现,采用关键字extends public class MountainBike extends Bicycle / ,30,多重继承,在有些计算机语言中,允许一个类有多个直接父类。这种继承关系称为多重继承 Java不支持多重继承 Java 允许一个类有多个直接父接口(interface),31,Java 中的Object类,Java中的Object类是最顶层的类,所有其他的类都是它直接或间接的子类。 类型是Object的变量可以指向任意的对象。 Object提供了运行在JVM中的所有对象都需要的行为(方法)。,32,继承的优点,通过继承可以重用父类中的代码。 程序员可以定义含有一般行为的抽象类。抽象类中的很多方法是没有实现的。可以在抽象类的基础上定义特定的子类,实现具体的细节。,33,什么是接口,Java语言中,接口是彼此不相关对象之间发生联系的手段。 接口类似于一种对某种行为达成的协议。这种协议以包含在接口中的一组常量、一些方法定义的形式提出来。对象必须实现接口,才能具有某种行为。 接口机制中没有强制这些类之间建立超、子类关系。,34,接口(interface),接口(interface)就象是一种特殊的类 成员方法: abstract 成员域: final和static 接口(interface)中所有的方法和域必须都是 public的 每个接口一般定义在一个.java 文件中,35,实例,例1: 通过接口定义一些常量 public interface Constants public static final int ONE = 1; public static final int TWO = 2; public static final int THREE = 3; / End of interface: Constants 例2: interface Shape / This method cannot have a body. public abstract void mb_draw(Graphics2D g); / End of interface: Shape,36,注意事项,接口中成员方法的默认方式是 public 和 abstract 接口中成员域的默认方式是public、 static和final,37,优点,一个类可以继承多个接口 例如:,public class A extends B implements C, D ,38,总结: 接口的使用方法,一个类实现接口( interface) 多个接口采用逗号分隔 类中必须定义接口中的所有方法 这些方法必须具有相同的声明方式,39,多态性的种类,静态的多态性重载 动态的多态性覆盖,40,静态的多态性(重载),在编译时就能够被识别 针对的是同一个类内的同名方法 例如: public int square(int x) return x * x; public double square(double x) return x * x; ,41,识别重载方法,识别标志: 参数的个数、类型、数据类型的排列顺序 返回值不能做为识别的标志,42,动态多态性(覆盖),在程序运行时才被识别 重写父类的方法 要求相同的声明 例如: public class J_HelloApplet exte

温馨提示

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

最新文档

评论

0/150

提交评论