A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小小6456 初级黑马   /  2014-5-18 20:54  /  1218 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

求解答大神们。。。。。。。。。。。。。

1 个回复

倒序浏览
1、从技术上讲,静态嵌套类不属于内部类。因为内部类与外部类共享一种特殊关系,更确切地说是对实例的共享关系;而静态嵌套类则没有上述关系,它只是位置在另一个类的内部,因此也被称为顶级嵌套类。
静态的含义是该内部类可以像其他静态成员一样,没有外部类对象时,也能够访问它,静态嵌套类仅能访问外部类的静态成员和方法。
class Outer
{
       static class Inner{}
}
class Test
{
       public static voidmain(String[] args)
       {
              Outer.Inner n =new Outer.Inner();
       }
}
在静态方法中定义的内部类也是StaticNested Class,这时候不能在类前面加static关键字,静态方法中的StaticNested Class与普通方法中的内部类的应用方式很相似,它除了可以直接访问外部类中的static的成员变量,还可以访问静态方法中的局部变量,但是,该局部变量前必须加final修饰符。
为什么需要内部类:典型的情况是,内部类继承自某个类或实现某个接口,内部类的代码操作创建其的外围类的对象。所以你可以认为内部类提供了某种进入其外围类的窗口。

2、匿名内部类编辑顾名思义,没有名字的内部类。表面上看起来它们似乎有名字,实际那不是它们的名字,匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类?如果满足下面的一些条件,使用匿名内部类是比较合适的:
只用到类的一个实例 ;
类在定义后马上用到;
类非常小(SUN推荐是在4行代码以下);
给类命名并不会导致你的代码更容易被理解。
在使用匿名内部类时,要记住以下几个原则:匿名内部类不能有构造方法,匿名内部类不能定义任何静态成员、静态方法,匿名内部类不能是public,protected,private,static,只能创建匿名内部类的一个实例,一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类,因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效;



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马