黑马程序员技术交流社区

标题: 关于内部类的一个问题请教大家。。 [打印本页]

作者: 佳佳扣子    时间: 2015-4-16 17:11
标题: 关于内部类的一个问题请教大家。。
刚学到基础视频中的内部类,有个问题不太清楚,有懂的同学帮忙解答一下,谢谢啦~
以下代码是毕老师基础教学视频中的参考,内部类有个特点是内部类可以直接访问外部类中的成员,通过Outer.Inner n=new Outer().new Inner();此语句已经建立起了内部类的对象n,为什么不可以直接访问外部类中的成员函数method呢?
class Outer
{
        private int x=4;
        class Inner
        {
                void function()
                {
                        System.out.println("Inner");
                }
        }
        void method()
        {
                Inner in=new Inner();
                in.function();
        }
}
class InnerClassDemo1
{
        public static void main(String[] args)
        {
                Outer.Inner n=new Outer().new Inner();

                n.method();
                n.function();
        }
}


作者: zhuchangbao    时间: 2015-4-16 17:23
首先这个内部类是属于成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。但是问题是,你这个是在main方法中,是不能用外部类的方法的。也就是在内部类中可以调用外部类的方法,但是你要是用对象来调用的话是不行的。不知道你懂了么?
作者: 佳佳扣子    时间: 2015-4-16 17:41
这样啊,懂了,谢谢!:loveliness:
作者: 海带    时间: 2015-4-16 17:46
内部类的实例对象是不能访问外部类的成员的,要访问外部类的成员可以不用建立内部类的实例就可以访问,即使外部类的成员被private修饰。




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