网站大量收购闲置独家精品文档,联系QQ:2885784924

第6章 类的扩展-2.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 类的扩展-2

第六章 类的扩展 第六章 类的扩展 6.4 类型兼容与类型转换 6.5 protected的真正含义 6.6 final方法和类 6.7 抽象类和方法 6.8 Object类 6.9 对象的克隆clone 6.10 扩展类的使用 6.11 扩展使用的类 6.12 单继承和多继承 6.13 小结 6.4 类型兼容与类型转换 Java是一种强类型语言,不允许任何有类型疑问的情况,以禁止不兼容赋值。 6.4.1 兼容性 1. 表达式的值赋给某个变量(表达式的类型与变量类型匹配;对于引用类型,表达式类型与引用变量的说明类型或其子类型一致;null对象引用是特例,null可以赋给任何类型的引用变量。) 2. return表达式(表达式的类型与方法说明的返回类型兼容) 宽化:把子类型对象当作超类型的实例对待; 窄化:把超类型引用转换为子类型引用。 6.4.2.1 隐式转换 隐式转换:类型转换是自动进行的,不要求程序员做什么。 两种隐式转换: 1. 基本类型转换: 整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级; 转换规则: 2. 构造类型转换: 一个类的实例对象,它包含其每个超类的一个实例。 6.4.2.2 显式的类型强制转换 把某个表达式显式转换为一个指定类型。 两种显式转换: 基本类型转换 有些类型转换是不允许的,如boolean不能为int型。 double转换为float ,会损失精度。 显式的整型转换可能要去掉高位(大整型的值超出小整型的范围)。 整数转换为字符时,只用到低位数据,其余位被舍弃。 6.4.2.2 显式的类型强制转换 构造类型转换(type)expr (类型名)表达式 “窄化”:不安全转换 “宽化”:安全转换 确定一个对象是否具有某种给定的类型,可用instanceof,如果转换有效,将返回true,否则返回false。 null引用根本不是任何对象类型的实例,所以对任何类型而言,以下语句总是返回flase。 6.4.3 类型测试 用instanceof运算符可测试一个对象是否属于某种类型。 expr instanceof Type 如果expr表达式与Type类型赋值兼容,就返回true,否则返回false。 null引用不是任何类型的实例,因此对null进行instanceof检查,总是返回false。 在窄化前使用instanceof测试,可增强安全性。 if (serf instanceof More) mref = (More)serf; 6.5 protected的真正含义 可通过对象引用.域/方法(实参表)形式对一个类中的protected成员进行访问,但该对象引用至少要和该类具有 “同样类型”。 同样类型:在一个类层次中;或该类的类型或其子类型之一。 在Java中,被说明为protected的成员也可以被同一个包中的任何代码访问。 6.5 protected的真正含义 protected静态域和静态方法可被任何扩展类访问。 6.6 final方法和类 优点是提高了安全性、简化优化。 安全性: 简化:调用可被替换为方法的体。“在线”机制。 6.7 抽象类和方法 抽象类(abstract class):仅定义了部分实现的类,而留待扩展类(子类)提供这些方法的部分或全部的进一步实现。 抽象类应用情况:一些行为对于给定类型的多数或全部对象是适合的,但另一些行为仅对特定类型的对象才有意义。 抽象类被说明为abstract,其中没有实现的方法被标记为abstract。 抽象方法必须被每个非抽象的子类所实现。 不能创建一个抽象类的对象,这是由于被调用的一些方法可能没有实现。 6.7 抽象类和方法 性能基准测试程序 6.7 抽象类和方法 包含一个抽象方法的类是abstract类。 一个abstract类中是否可有final方法。 一个static方法可以是抽象的吗? 6.8 Object类 Object类:所有类的公共超类。提供类结构的根。 Object中的方法分为两个范畴: public boolean equals ( Object obj ):比较接受对象和obj所引用的对象是否相同。 public int hashCode( ):返回该对象的哈希码。不同对象的哈希码值通常都是唯一的。 protected Object clone( ) throws CloneNotSupportedException:返回该对象的一个克隆。 public fi

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档