Java的面向对象编程 ppt.ppt_第1页
Java的面向对象编程 ppt.ppt_第2页
Java的面向对象编程 ppt.ppt_第3页
Java的面向对象编程 ppt.ppt_第4页
Java的面向对象编程 ppt.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

Java的面向对象编程 主讲人 孙鑫 http www sunxin org 面向对象编程概述 简单的说 面向对象编程 ObjectOrientedProgramming 简称OOP 描述的是对象之间的相互作用 面向对象编程与面向过程编程的区别 过程化程序设计先确定算法 再确定数据结构 面向对象编程先确定数据结构 再确定运算 面向过程编程的程序员 习惯于建立数据结构存放数据并定义方法 函数 来操作数据 面向对象编程的程序员则构造一个对象模型 将数据与方法组织在一起 http www sunxin org 对象对象的状态对象的行为 我们可以把现实世界的事物抽象成对象 对象一般都有两个特征 状态 state 和行为 behavior 软件的对象概念是由现实世界对象抽象而来 把现实世界对象的状态保存在软件对象的变量中 现实世界对象的行为通过软件对象的方法 函数 来实现 http www sunxin org 类和对象 把相似的对象划归成一个类 在软件中 类 就是一个模板 它定义了通用于一个特定种类的所有对象的状态 变量 和行为 方法 类是创建对象的模板 对象是类的实例 http www sunxin org 面向对象程序设计 从程序设计的角度看 类是面向对象程序中最基本的程序单元 类实质上定义的是一种数据类型 这种数据类型就是对象类型 所以我们可以使用类名称来声明对象变量 声明对象变量之后 还不能使用对象 必须用运算符new创建对象实体之后 才能使用对象 http www sunxin org 面向对象编程的难点 掌握面向对象的困难之处在于思路的转换 我们通常习惯于考虑解决问题的方法 而不是考虑将问题抽象成对象再去解决它 http www sunxin org 一个简单的例子 编写一个驾驶汽车的方法面向过程的程序设计 编写一个方法 voiddrivecar 面向对象的程序设计 将一辆汽车看成一个对象 将所有汽车对象的共性抽取出来 设计一个类Car 类中有一个方法voiddrive 用Car这个类实例化一个具体的对象car 调用 car drive http www sunxin org 类的构造方法 构造方法的名字和类名相同 并且没有返回值 构造方法主要用于为类的对象定义初始化状态 我们不能直接调用构造方法 必须通过new关键字来自动调用 从而创建类的实例 Java的类都要求有构造方法 如果没有定义构造方法 Java编译器会为我们提供一个缺省的构造方法 也就是不带参数的构造方法 http www sunxin org new关键字的作用 为对象分配内存空间 引起对象构造方法的调用 为对象返回一个引用 http www sunxin org 缺省构造方法 当我们用缺省的构造方法初始化对象时 系统用默认值初始化对象的成员变量 各种数据类型的默认值为 数值型0booleanfalsechar 0 对象null http www sunxin org 方法的重载 overload 重载构成的条件 方法的名称相同 但参数类型或参数个数不同 才能构成方法的重载 http www sunxin org 特殊变量this this变量代表对象本身当类中有两个同名变量 一个属于类 类的成员变量 而另一个属于某个特定的方法 方法中的局部变量 使用this区分成员变量和局部变量 使用this简化构造函数的调用 http www sunxin org 特殊变量this 关于实例方法和实例数据成员的进一步说明一个类所有的实例 对象 调用的成员方法在内存中只有一份拷贝 尽管在内存中可能有多个对象 而数据成员在类的每个对象所在内存中都存在着一份拷贝 this变量允许相同的实例方法为不同的对象工作 每当调用一个实例方法时 this变量将被设置成引用该实例方法的特定的类对象 方法的代码接着会与this所代表的对象的特定数据建立关联 http www sunxin org 关键字static 静态方法和静态变量是属于某一个类 而不属于类的对象 静态方法和静态变量的引用直接通过类名引用 在静态方法中不能调用非静态的方法和引用非静态的成员变量 反之 则可以 可以用类的对象obj去调用静态的方法method 如 obj method http www sunxin org 常量的定义 使用关键字final定义常量 例如 finaldoublePI 3 1415926 作为一种约定 在定义常量时 通常采用大写形式 final常量可以在声明的同时赋初值 也可以在构造函数中赋初值 为了节省内存 我们通常将常量声明为静态的 static http www sunxin org 类的继承 理解继承是理解面向对象程序设计的关键 在Java中 通过关键字extends继承一个已有的类 被继承的类称为父类 超类 基类 新的类称为子类 派生类 在Java中 不允许多继承 http www sunxin org 方法的覆盖 override 在子类中定义一个与父类同名 返回类型 参数类型均相同一个方法 称为方法的覆盖 覆盖发生在子类与父类之间 http www sunxin org 特殊变量super 特殊变量super 提供了对父类的访问 可以使用super访问父类被子类隐藏的变量或覆盖的方法 每个子类构造方法的第一条语句 都是隐含地调用super 如果父类没有这种形式的构造函数 那么在编译的时候就会报错 http www sunxin org 多态性 通过覆盖父类的方法来实现 在运行时根据传递的对象引用 来调用相应的方法 http www sunxin org 面向对象的程序设计 问题 求一个长方形的周长和面积 以面向过程的程序设计方式思考 1 确定长方形周长和面积的算法 2 编写两个方法 函数 分别计算长方形的周长和面积 3 求周长的方法 函数 和求面积的方法 函数 需要两个参数 分别是长方形的长和宽 http www sunxin org 面向过程的程序设计代码 classRectangle staticintperimeter intlength intwidth return2 length width staticintarea intlength intwidth returnlength width publicstaticvoidmain String args System out println perimeter Rectangle perimeter 5 4 System out println area Rectangle area 5 4 http www sunxin org 面向对象的程序设计 问题 求一个长方形的周长和面积 以面向对象的程序设计方式思考 1 一个长方形可以看成一个长方形对

温馨提示

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

评论

0/150

提交评论