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

  • 4
  • 0
  • 约9.67千字
  • 约 32页
  • 2017-12-07 发布于江西
  • 举报
第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虚拟机首先调用父类的构造方法,然后按照实例变量的和实例初始化代码块定义的先后次序

文档评论(0)

1亿VIP精品文档

相关文档