快速业务通道

浅析Java语言中的内部类 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
lass Goods3 {   public Contents cont(){    return new Contents(){     private int i = 11;     public int value() {      return i;     }    };   } }

这里方法cont()使用匿名内部类直接返回了一个实现了接口Contents的类的 对象,看上去的确十分简洁。

在java的事件处理的匿名适配器中,匿名内部类被大量的使用。例如在想关 闭窗口时加上这样一句代码:

frame.addWindowListener(new WindowAdapter(){   public void windowClosing(WindowEvent e){    System.exit(0);   } });

有一点需要注意的是,匿名内部类由于没有名字,所以它没有构造函数(但 是如果这个匿名内部类继承了一个只含有带参数构造函数的父类,创建它的时候 必须带上这些参数,并在实现的过程中使用super关键字调用相应的内容)。如 果你想要初始化它的成员变量,有下面几种方法:

如果是在一个方法的匿名内部类,可以利用这个方法传进你想要的参数,不 过记住,这些参数必须被声明为final。

将匿名内部类改造成有名字的局部内部类,这样它就可以拥有构造函数了。

在这个匿名内部类中使用初始化代码块。

为什么需要内部类?

java内部类有什么好处?为什么需要内部类?

首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方 法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候, 你可以建一个内部类实现这个接口。由于内部类对外部类的所有内容都是可访问 的,所以这样做可以完成所有你直接实现这个接口的功能。

不过你可能要质疑,更改一下方法的不就行了吗?

的确,以此作为设计内部类的理由,实在没有说服力。

真正的原因是这样的,java中的内部类和接口加在一起,可以的解决常被C++ 程序员抱怨java中存在的一个问题——没有多继承。实际上,C++的多继承设计 起来很复杂,而java通过内部类加上接口,可以很好的实现多继承的效果。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号