黑马程序员技术交流社区

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

作者: xby    时间: 2013-5-22 07:03
标题: 内部类访问
在外部其他类中怎么直接访问静态内部类的非静态成员呢?
作者: hadexs    时间: 2013-5-22 07:22
需要创建一个对象,new 外部类名.内部类().成员名();例如:new Outer.Inner().function();
作者: 袁梦希    时间: 2013-5-22 07:26
楼主最好是用代码的方式体现出来,诚心发帖,让大家知道你的意图是什么,这样自己学到的同时别人也学到了,加油吧   支持你。
作者: 袁梦希    时间: 2013-5-22 07:28
hadexs 发表于 2013-5-22 07:22
需要创建一个对象,new 外部类名.内部类().成员名();例如:new Outer.Inner().function(); ...

尽量用代码的形式体现你的回答,体现给楼主,这样学习才会事半功倍,加油
作者: 罗海清    时间: 2013-5-22 07:44
class Outer
{
        public static class Inner
        {
                public void doStuff()        //这个就是静态内部类的非静态成员
                {
                        System.out.println("kk");
                }
        }
}


public class TestInner
{
        public static void main(String[] args)
        {
                Outer.Inner inner = new Outer.Inner();
                inner.doStuff();
                /**
                        因为Inner是静态的,所以可以通过【类名.成员名】来调用,
                        所以用new Outer.Inner(),而不需要先创建Outer对象。

                        因为doStuff()是非静态成员,所以必须new 出Inner对象。
                */
        }
}

运行结果是:“kk”

总结:
        1,Inner要被声明为public,在外部就可以创建Outer的实例对象
        2,通过Outer的实例对象,就可以创建Inner的实例对象
        3,于是通过Inner的实例对象,来调用内部类Inner的成员了


作者: 神之梦    时间: 2013-5-22 10:50
楼主你同一个问题,发太多帖了吧




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