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

第3章Java面向对象编程(上.ppt

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

3.6.1 实例内部类 在Test.java程序的main() 方法当中,首先定义了一个外部类变量Outer,用new 产生外部类的一个对象,由堆内存分配空间,如图3.7所示。它的引用保存在栈内存的o 变量中。当调用外部类的print()方法,进入外部类的print()方法时,会有一个特殊变量this 保存对象本身的一个引用。然后在print()方法当中用new 又产生一个对象,进而在堆内存当中分配一个内部类对象,将它的引用保存到i变量中。用i.print()方法进入内部类Inner 类的print()方法中,同样地,在Inner 类的 print()方法中,也有特殊的变量保存对象本身的一个引用,这里要注意到,在Inner 对象中,还有一个 Outer.this变量,保存Outer 对象的一个引用。在内部类当中,访问外部类的所有成员就是通过Outer.this变量的。 图3.7 类的运行结构图 3.6.2 匿名类 匿名类是一种特殊的类,这种类没有名字。匿名类具有以下特点: (1)匿名类是final类; (2)匿名类由于没有名字,因而无法定义构造方法,编译程序会自动生成匿名类的构造方法,在其中自动调用父类的构造方法; (3)在匿名类中可以定义实例变量和若干个实例初始化代码块和新的实例方法。Java虚拟机首先调用父类的构造方法,然后按照实例变量的和实例初始化代码块定义的先后次序依次进行初始化。 (4)匿名类除了可以继承类以外,还可以实现接口。 (5)匿名类可以访问外部类的所有成员,如果匿名类位于一个方法中,还能访问所在方法的final类型的局部变量。 【例3.11】 匿名类的特点。 程序运行结果: 第3章 Java面向对象编程(上) 3.1 类的定义及成员变量初始化 3.2 创建对象 3.3 this引用 3.4 静态成员 3.5 package与import语句 3.6 内部类 3.1 类的定义及成员变量初始化 3.1.1 类的定义 基本的Java类定义格式是: [类修饰符] class 类名 { 类体 } 类的成员变量的声明格式是: [修饰符] 类型 变量名[ = 初始值]; 例如,private String name = “Tom” ; 类的成员方法的声明格式是: [修饰符]返回值类型方法名(形式参数列表) { … } 3.1.2 变量的初始化 成员变量可以是Java语言中任何一种数据类型(包括基本类型和引用类型)。在定义成员变量时可以对其初始化,如果未对其进行初始化,Java使用默认的值对其进行初始化,如表3.1所示,且作用域为整个类体。 数 据 类 型 默 认 值 boolean false byte (byte)0 char ‘\u int 0 short (short)0 long float double 0.0d 引用类型 null 表3.1 数据类型的默认初始化值 3.2 创建对象 3.2.1 构造方法 在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。构造方法的功能是:当创建一个类的对象时,首先用new 语句从堆区中分配该对象的内存空间,然后自动调用类的某一个构造方法,对该对象的内存空间进行初始化,为实例变量赋予合适的初始值。构造方法的语法规则: ? 方法名必须与类名相同。 ? 不要声明返回类型。 ? 不能被static、final、synchronized、abstract和native修饰。 【例3.1】 不带形参的构造方法,在构造方法中对其成员变量初始化。 3.2.1 构造方法 Java虚拟机在执行下面语句时,将在栈内存中生成一个引用变量initiate,由于initiate是一个局部变量,且这时还没有创建任何对象,所以initiate还没有被赋值。 ConstructorInitiate initiate; 执行下面的语句后,将在堆内存中创建一个ConstructorInitiate对象,并对其成员变量 initiate = new ConstructorInitiate(); 进行初始化,并把对象的引用赋给initiate。这时,initiate指向ConstructorInitiate对象,其内存布局如图3.1所示。 图3.1 对象的内存布局 3.2.1 构造方法 程序运行结果: 3.2.2 默认构造方法 Java语言规定,每个类都必须至少定义一个构造方法。若一个类没有定义构造方法,则编译程序提供一个构造方法。无参数的构造方法称为默认构造方法。编译程序自动提供的构造方法就是一个默认构造方法。格式如下: 与类相同的访问控制符方法名(){ super(); // 自动调用父类的默认构造方法 } ? 若一个类

文档评论(0)

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

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

1亿VIP精品文档

相关文档