利用内部类及匿名类优化Java 程序代码_第1页
利用内部类及匿名类优化Java 程序代码_第2页
利用内部类及匿名类优化Java 程序代码_第3页
利用内部类及匿名类优化Java 程序代码_第4页
利用内部类及匿名类优化Java 程序代码_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1、利用内部类及匿名类优化 Java 程序代码【摘要】 内部类是定义在其他类内部的类,它有静态内部类与非静态内部类两 种。内部类可以访问外部类的成员,但外部类不能直接访问内部类的成员。 由内部类可以引申出匿名内部类, 匿名内部类可以极大提高编程 效率,改善程序的可读性。【关键词】内部类;内部匿名类;外部类0.引言内部类是指把一个类定义在另一个类的类体中。里面的类被称为内部类。内 部类作为外部类的一个成员而存在的。内部类可用静态修饰,也可用 protected 和 private 修饰。 通过内部类可以继承某个类或实现某个接口, 以减少程序代码 和增强程序可读性; 内部类都能独立地实现接口, 如果外

2、部类实现了某接口, 这 时的内部类相当于实现了“多重继承”。1.内部类内部类主要分为静态内部类和非静态内部类。1.1 非静态内部类非静态内部类可以直接使用外部类的成员, 可用 public/private/default 权限修饰符,但不能定义静态成员。例:public class Outerint i=10;static int j=20;public void outer_f1(public static void outer_f2(class Innervoid inner_f1(int i=30;outer_f1(;outer_f2(;1在内部类中,可以直接访问外部类的成员及变量如在

3、Inner 类中:outer_f1(; outer_f2(;public void outer_f3(Inner inner=new Inner(;inner.inner_f1(;1.2 静态内部类(嵌套类非静态内部类的对象隐含地保存了一个引用指向创建它的外部类对象。 当不需要内部类对象与其外部类对象之间有联系, 将内部类声明为 static , 通常称为 嵌套类。静态内部类可以用 public , protected , private 修饰,静态内部类中 可以定义静态或者非静态的成员。 与非静态内部类的区别在于要创建静态内部类 的对象, 不需要通过其外部类的对象来创建; 静态内部类的对象不

4、能访问外部类 的非静态成员。静态内部类只能访问外部类的静态成员(如在 inner_f1(中访问了外部类 的静态成员变量 i 和静态成员方法 outer_f1( , 而不能访问外部类的非静态成 员。1 外部类访问内部类的静态成员外部类访问内部类的静态成员的形式为:内部类 . 静态成员,如方法 outer_f3(中 Inner.inner_i。2 外部类访问内部类的非静态成员外部类访问内部类的非静态成员通过内部类的对象进行。 如:方法 outer_f3(中 Inner inner=new Inner(; inner.inner_f2(;先创建内部类的对象 inner , 然后通过 inner 来访

5、问 innner_f2(。可以直接创建:Outer.Inner in=new Outer.Inner(;而不需要通过生成外 部类对象来生成。 实际上静态内部类成为了一个顶级类 (是一个包含内部类而它 自己并没有被嵌套到其他类中的类。2.匿名内部类没有类名的内部类就是匿名类。 通常用一条语句完成匿名类的定义与实例创 建。2.1 什么时候使用匿名类类定义代码段很短;只需要创建该类的一个实例;类的定义代码与类的使用 代码紧邻。使用匿名内部类是应注意:匿名内部类不能有构造方法; 不能定义 任何静态成员、方法和类; 不能是 public , protected , private , static 。

6、2.2 匿名内部类一个匿名内部类一定是在 new 的后面,用其隐含实现一个接口或继承一个 类。下面的例子完成窗口的关闭功能,由内部类改为匿名类来实现:例 1:用内部类窗口的关闭事件。public class TestWindowClose extends Framepublic TestWindowClose(super (;addWindowListener (new WindowClose(;setSize (200, 100;setVisible (true ;class WindowClose extends WindowAdapterpublic void windowClosing

7、(WindowEvent epublic static void main(String argsTestWindowClose t=new TestWindowClose(;例 2:改用匿名内部类来实现窗口的关闭事件,代码如下。public class TestWindowClose extends Framepublic TestWindowClose(super (;addWindowListener (new WindowAdapter(public void windowClosing(WindowEvent edispose (; System.exit (0;setSize (200, 100; setVisible (true ;public static void main(String argsTestWindowClose t=new Test

温馨提示

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

评论

0/150

提交评论