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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵永康 中级黑马   /  2012-9-21 23:34  /  1868 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

鉴于程序中经常会看到类中套类的情况,我们经常在编写程序的时候,不会定义内部类的时候,总会报错,但是还不知道程序错在哪里!!所以,我结合视频,结合网上,总结了一下内部类的常见特点,希望对大家--特别是初学者有帮助,因为我也是从0基础一点点自学的,直到其中的艰辛!因为,是本人自己总结的,肯定有错误之处,希望大家指出,共同进步!!


类的分类
成员类:定义在成员位置上的类
   -----分为  非静态成员内部类   静态成员内部类
class Outer
{
        class Inner
        {
                System.out.println(x);
        }
        public   static void main(String[] args)
        {

        }
}
在这个类中Inner定义在成员位置上,因为内部类带有外部类的引用,所以变量x定在
哪里都可以用
因为定义在成员位置上,所有可以被static  和private修饰
被static修饰的时候,Inner内部变量就必须是静态的 他所要访问的成员变量也就必须是静态的
假如Inner里面有静态成员时候,那么Inner也就必须是静态的
所以,当有判断题说一个类能被static修饰吗??我们的答案就是能,就是当定义在成员位置上的时候!!!


局部内部类
class Outer
{
        public   static void main(String[] args)
        {
                final int x;
        }
        void show()
        {      
                class Inner
                {

                }
        }
}
在这个例子中,Inner是局部类所以就不能被成员修饰符所修饰 static private
Inner想要访问x,此时X就必须被定义成final 才能访问到


匿名内部类
匿名内部类的创建前提条件就是他必须实现一个接口或者类
  用接口或者类的名字进行

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
顶一个,楼主给力啊
回复 使用道具 举报
顶一下,感谢分享。
回复 使用道具 举报
楼主问你个问题:局部内部类要访问外部类的局部变量,为什么要用final修饰才能访问到这个变量????
回复 使用道具 举报
楼主总结得不错,呵呵
回复 使用道具 举报
楼主总结得不错,呵呵
回复 使用道具 举报
张文建 发表于 2012-9-22 11:54
楼主问你个问题:局部内部类要访问外部类的局部变量,为什么要用final修饰才能访问到这个变量???? ...

因为局部内部类定义在方法内部,当方法执行完毕的时候,就会释放其资源,也就是释放了外部变量,显然外部变量的生命周期是整个程序,并不是随着内部类的结束而结束。所以定义为flanai就是为了让其在整个程序中都能有效
回复 使用道具 举报
顶一下。
回复 使用道具 举报
赵永康 发表于 2012-9-22 15:04
因为局部内部类定义在方法内部,当方法执行完毕的时候,就会释放其资源,也就是释放了外部变量,显然外部 ...

呵呵,原来是这样,多谢楼主。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马