JavaKKupdatePPT课件_第1页
JavaKKupdatePPT课件_第2页
JavaKKupdatePPT课件_第3页
JavaKKupdatePPT课件_第4页
JavaKKupdatePPT课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

面向对象的思想 面向对象编程 OOP 是目前最接近人类思维的计算机语言之一 它是计算机语言朝着人类自然语言发展方向上的研究成果 对问题的求解过程实际上是模拟人类社会对事物的处理过程 所有的物体都可以看作对象 对象有一定的框架结构 具有一定的功能 完成一定的任务 而且这些对象之间可以建立起联系 从而就像人类社会那样处理各种各样的事务 在Java语言中这种对象都是通过类来构造的 而类是由成员变量和方法组成的 类的特性 在计算机语言中 面向对象的类一般具有三个基本特性 封装性 继承性和多态性 类的设计 分析一个类应具有的属性以及行为 属性对应于实例变量 行为对应于方法 根据对象初始化所需要赋予的属性值 定制构造器 所有实例变量 方法和构造器应根据具体需求进行定制 例子 classStudent Stringid 学号Stringname 姓名publicvoidintroduce 自我介绍 System out println Mynameis name 构造器 构造器用于创建新对象并对其进行初始化 构造器与方法非常相似 但有两点不同 1 构造器的名字总与类名相同 2 构造器没有返回值类型 在创建一个类对象时 new运算符调用该类的构造器以执行初始化工作 构造器 如果没有为类声明构造器 则编译器会帮你创建一个没有参数的构造器 类的默认构造器将调用其父类的无参数构造器 然后将实例变量初始化为它们声明中所指定的初始值 或初始化为它们的默认值 基本数值类型为0 boolean型为false 引用类型为null 如果父类没有构造器 则编译器发出一个错误消息 如果程序员为某个类声明了任何一个构造器 则编译器将不会为该类创建默认的构造器 构造器 如果一个类拥有的public构造器都不是无参数的构造器 并且程序试图调用一个无参数构造器来初始化该对象 则会出现一个编译错误 只有在类没有构造器 调用默认构造器 或有一个无参数的public构造器时 才能这样做 一个类可以包含多个重载的构造器 使该类的对象能够以不同的方法进行初始化 静态成员 静态变量 类变量的所有实例使用的是同一个副本 静态方法 行为与具体的对象无关的方法 可以被设计成静态方法 访问控制符 访问修饰符 继承 继承是增强现有类的一种机制 超类更一般 子类更特殊 Question 一个表示学生的类 和一个表示研究生的类 哪个应该是超类 哪个应该是子类 子类 超类 继承 Java的类层次结构起始于java lang Object类 所有Java类均直接或间接地派生于该类 继承通过增加方法和字段来扩展现有类 继承的优点 继承的优点之一是代码复用 继承的例子 超类子类学生研究生 本科生形状圆 三角形 矩形借贷汽车贷款 住房按揭贷款 抵押贷款雇员教师 职员银行帐户支票帐户 储蓄帐户 对象之间的关系 is a 关系 轿车是交通工具 has a 关系 轿车有方向盘方向盘是轿车的成员 轿车类是交通工具类的子类 方法和实例变量的继承 子类有以下三种方法 1 覆盖超类的方法 相同名称的方法 做不同的事情 2 继承超类的方法 如果没有明确地覆盖超类的方法 那么就自动地继承它 3 定义新方法 子类继承了超类的所有实例变量 设计实例 假设你正在为一家银行设计一款个人金融软件 银行业的一个基本概念是银行账户 现在的工作是设计一个对应于银行账户的类BankAccount BankAccount类的属性和行为 属性 账户号 账户存款方法 存款 deposit 取款 withdraw 获取账户号 获取当前存款余额 类的三个组成部分 1 实例变量例如 doublebalance 2 构造器例如 publicBankAccount StringanAccountID accountID anAccountID balance 0 3 方法例如 publicvoiddeposit doubleamount balance amount 继承实例 以银行帐户类BankAccount作为超类 创建一个存款帐户类SavingsAccount 考虑SavingsAccount有哪些BankAccount没有的属性和行为 1 利率2 加息的操作 实例 publicclassSavingsAccountextendsBankAccount privatedoubleinterestRate publicSavingsAccount StringanAccountID doubleinitBalance doublerate super anAccountID initBalance interestRate rate publicvoidaddInterest 利息结算 练习 以银行帐户类BankAccount作为超类 创建一个支票帐户类CheckingAccount 要求 1 增加一个表示交易数量的实例变量transactionCount2 增加一个新方法deductFees 表示从帐户中扣除一定税款的操作 具体规则为交税时若交易数量超过3笔 超出的每笔交易扣除2元税款3 提示 必要的话需要覆盖存 取款的方法 多态性 子类对象可以视为超类的对象 所以 这样做是可以的 可以将子类引用赋给超类变量 CheckingAccountaccount newCheckingAccount 1001 1000 BankAccountba account 或者直接写成 BankAccountba newCheckingAccount 1001 1000 多态性 问题 BankAccountba newCheckingAccount 1001 1000 ba deposit 100 此时对ba调用BankAccount类与CheckingAccount类均有的deposit方法时 实际执行的是哪一个 多态性 包含子类对象引用的超类类型变量会调用子类方法 这有什么好处 程序可以创建一个超类引用数组 该数组引用了多个子类类型的对象 可以统一对它们进行同样的操作 每个子类类型的对象根据自己的方法执行要求的操作 注意 所调用的方法必须在超类中有定义 多态性的意义 多态性使程序员能够处理程序的一般性问题 而让执行环境处理特定问题 程序员可以命令对象以适合于该对象的方式进行工作 而无需知道对象的类型 只要这些对象属于同一继承层次结构 多态性促进了可扩展性 调用多态行为的软件与接收消息的对象的类型无关 对于可以响应现有方法调用的新对象类型 无需修改基本系统 就可以将这个新对象类型集成到系统中 多态性 多态的顺利呈现 要求超类含有相同构型的方法 子类没有不要紧 自动继承了超类的 程序不能对超类类型的引用调用超类中没有声明的方法 如果该引用指向一个子类对象 而且需要调用子类中才有的方法 就必须将超类引用强制转换为子类类型的引用 deductFees 仅在CheckingAccount中有定义 因此ba deductFees 错误 CheckingAccount ba deductFees 正确 多态的另一处应用 考虑为BankAccount类增加以下处理转账的方法 publicvoidtransfer doubleamount BankAccountother withdraw amount other deposit amount 调用该方法时会根据参数中指定的实际需要转入的账户的对象类型执行相应的存款操作 多态的另一处应用 例如 SavingsAccountmomsAccount newSavingsAccount 1001 0 0 05 CheckingAccountharrysAccount newCheckingAccount 1002 100 momsAccount deposit 10000 momsAccount transfer 2000 harrysAccount harrysAccount withdraw 1500 harrysAccount withdraw 100 instanceof运算符 if bainstanceofCheckingAccount CheckingAccountca CheckingAccount ba ca deductFees 抽象类 在某些情况下 创建一个类的对象没有实际意义 因而声明一些不能实例化的类是有用的 publicabstractclassShape抽象类是不完整的 不能实例化抽象类的对象 但可以使用抽象超类来声明变量 抽象

温馨提示

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

评论

0/150

提交评论