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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刚学到基础视频中的内部类,有个问题不太清楚,有懂的同学帮忙解答一下,谢谢啦~
以下代码是毕老师基础教学视频中的参考,内部类有个特点是内部类可以直接访问外部类中的成员,通过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();
        }
}

3 个回复

倒序浏览
首先这个内部类是属于成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。但是问题是,你这个是在main方法中,是不能用外部类的方法的。也就是在内部类中可以调用外部类的方法,但是你要是用对象来调用的话是不行的。不知道你懂了么?
回复 使用道具 举报
这样啊,懂了,谢谢!:loveliness:
回复 使用道具 举报
内部类的实例对象是不能访问外部类的成员的,要访问外部类的成员可以不用建立内部类的实例就可以访问,即使外部类的成员被private修饰。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马