Java编程思想第四版第五章初始化与清理课件.ppt

Java编程思想第四版第五章初始化与清理课件.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
六、成员初始化 ⑵ ★ 数据成员为根本类型 Java 将为 类的每个根本数据成员提供 自动初始化 〔保证都会有一个初始值〕 ◆ 典例分析: P92 代码〔自己调试〕 六、成员初始化 ⑶ ★ 引用类型 无论是否数据成员,如果不将其初始化, 该 对象引用会被 Java 自动赋值为 null 六、成员初始化 2 、 指定初始化 ★ Java 允许: 在定义类的数据成员的同时 可以为其赋初值 ◆ 优点:简单直观 缺点:每个对象都具有相同的初值 ★ 典例: P93 代码 void public class InitialValues2 { int i ; // 自动初始化 int j = 999 ; … // 先自动初始化,再指定初始化 } ◆ 注意: C++ 不允许这样做,必须全部通过构造 函数来初始化 七、构造器初始化 1 、 初始化的第一根本原那么 ★ ◆ 可以用构造器来进行初始化 但执行顺序是: 先自动初始化,再指定 初始化,最后调用构造器进行初始化 ★ public class Counter { int i=99 ; Counter 〔〕 { i=7 ; } // ...... } ◆ 执行顺序 : i 首先被自动初始化为 0 ,然后指定 初始化为 99 ,最后利用构造器初始化为 7 ★ 大家肯定会问一个问题:既然这些数据成员的 初始化已经得到保证,那还要构造器做什么? ◆ 首先:自动初始化只是保证这些 Java 类的稳定性 它的值并不是实际情况所需要的值 ◆ 其次: 构造器存在着并没有为某个数据成员进行 初始化的危险 ,那么如果没有自动初始化,我们 该怎么办? 七、构造器初始化 2 、 变量的初始化顺序 ★ ◆ 变量定义的先后顺序决定其初始化顺序 不管这些变量的定义位于什么地方, 它们一定会在 任何方法 〔包括构造器〕 被调用之前得到初始化 七、构造器初始化 3 、 静态数据的初始化 ★ 还有一个棘手的问题没有解决: ★ 我们从前面知道:类的数据成员将会先后进行 自动初始化和指定初始化 ◆ 问题是:类的数据成员又分为 静态数据成员 和 非静态数据成员 ,那么在所谓的自动初始化和 指定初始化过程中,是先做静态成员的初始化 还是先做非静态成员的初始化? 第五章 初始化与清理 ★ ★ ★ 初始化 清理 数组的初始化和枚举类型 一、用构造器确保初始化 1 、 为什么要引入 构造器〔 constructor 〕 ? ★ 假设没有构造器,那么我们用户就要 自己去完成 初始化工作 ◆ 但用户可能不知道如何初始化,甚至 会忘记初始化 一、用构造器确保初始化 2 、 构造器如何取名? ★ C++ 语言采用的解决方案看来最简单 而且最符合逻辑,所以在 Java 中也是 采用了这种方案 ◆ 构造器采用与类相同的名称 一、用构造器确保初始化 3 、 构造器的种类 ★ ★ 无参的构造器〔习惯称为 默认构造器 〕 带参的构造器 一、用构造器确保初始化 4 、 构造器的特点 ★ 构造器是一种特殊类型的方法,因为 它没有返回值 ◆ 分析:与返回值为 void 〔空〕的区别, 后者仍有可能以其它形式返回某些值 二、方法重载 1 、 方法重载 的概念 ★ ◆ 方法名相同,而 参数类型列表 不同 也就是依靠 参数的个数、类型和顺序 的不同加以区分〔后者不推荐使用〕 二、方法重载 2 、 在 C++ 和 Java 中,为什么必须要支持 方法重载? ★ 构造器是一个非常重要的原因 ★ 既然构造器的名字由类名所决定,就只能有 一个构造器名,那么如果想用多种方式创立 一个对象,该怎么办? ◆ 典例: Tree 〔〕 // 无参构造器 Tree 〔 int i 〕 // 带参构造器 ◆ 为了让方法名相同而参数不同的构造器同时 存在,必须用到 方法重载 三、默认构造器 ★ 如果你写的类没有构造器,那么编译器 会 自动帮你创立一个默认构造器 〔无参 构造器〕 ◆ 如果已经定义了一个构造器〔无论是否 有参数〕,编译器就不会帮你自动创立 默认构造器 ★ 典例 1 : P83 代码 class Bird {} public class DefaultConstructor { public static void main 〔 String[] args 〕 { Bird b = new Bird 〔〕 // Default! } } ◆ 表达式 new Bird 〔〕将调用默认构造器,即使你 并没有明确定义它 ★ 典例 2 : P83 代码 Bird class Bird2 { Bird2 〔 int i 〕 {} Bird2 〔 double d 〕 {} } public

文档评论(0)

全网精品课件 + 关注
实名认证
内容提供者

专业

1亿VIP精品文档

相关文档