黑马程序员技术交流社区

标题: 内部类分类 [打印本页]

作者: 少说话,多做事    时间: 2015-5-2 01:05
标题: 内部类分类
  1、成员内部类
               A、其他类如何使用该内部类?
                    外部类名.内部类名 变量名 = new 外部类构造方法.new 内部类构造方法;
                     private:一般就是为了安全
                     static:一般就是为了方便调用
               B、注意问题
                     如果一个内部类含有静态方法,那么该内部类必须被静态修饰
                     如果一个类被定义为静态时,该类中可以没有静态方法
          2、局部内部类
               定义在方法中的类

               结论
                     局部内部类访问局部变量,该局部变量必须被final修饰,因为被final 修饰就变成常量,在方法区中,他的生命周期延长了

作者: Dylon    时间: 2015-5-2 10:27
楼主,关于内部类,我有几个问题
首先:如果用private定义了内部类,其他的类如何使用该内部类?如果可以使用,格式又是什么样的呢?
然后:用static修饰内部类是为了方便调用,那么调用的方法格式又是怎样的呢?
最后:为什么一个含有静态方法的内部类,必须要被静态修饰?

作者: 北京南瓜    时间: 2015-5-2 12:11
Dylon 发表于 2015-5-2 10:27
楼主,关于内部类,我有几个问题
首先:如果用private定义了内部类,其他的类如何使用该内部类?如果可以使 ...

楼主,关于内部类,我有几个问题
首先:如果用private定义了内部类,其他的类如何使用该内部类?如果可以使用,格式又是什么样的呢?
然后:用static修饰内部类是为了方便调用,那么调用的方法格式又是怎样的呢?
最后:为什么一个含有静态方法的内部类,必须要被静态修饰?


第一点:私有的意思是指其他类不能直接访问,但是在外部类中有效,跟属性私有一个意思,都是为了安全
第二点:调用内部类中的静态方法:外部类名.内部类名.方法名()
            调用内部类非静态方法:new 外部类名.内部类名().方法名()
第三点:因为内部类是外部类的成员,又因为静态随着类的加载而加载,如果内部类不是静态而内部类中的方法是静态的话,就会出现内部类的静态方法随着外部类加载而加载,而内部类作为外部类的非静态成员却没有加载,这就相当于儿子都有了而他妈还没出生,不矛盾嘛
总之看一点,你把内部类当做外部类的一个成员变量看就行了,不要老想着他是一个类。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2