黑马程序员技术交流社区

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

作者: 征服    时间: 2014-4-6 22:01
标题: 内部类问题
本帖最后由 征服 于 2014-4-7 16:31 编辑

内部类有点搞不懂,请高手指导!谢谢!
public class OuterClass
{
        innerClass in = new innerClass(); // 在外部类实例化内部类对象引用
        
        public void ouf()
        {
                in.inf(); // 在外部类方法中调用内部类方法
        }
        
        class innerClass
        {
                innerClass() { // 内部类构造方法
                }
               
                public void inf() { // 内部类成员方法
                }
               
                int y = 0; // 定义内部类成员变量
        }
        
        public innerClass doit() { // 外部类方法,返回值为内部类引用
                // y=4; //外部类不可以直接访问内部类成员变量
                in.y = 4;
                return new innerClass(); // 返回内部类引用
        }
        
        public static void main(String args[]) {
                OuterClass out = new OuterClass();
                // 内部类的对象实例化操作必须在外部类或外部类中的非静态方法中实现
                innerClass in=doit();
                innerClass in2=new innerClass();
        }
}

作者: hyace    时间: 2014-4-6 22:24
你的问题是什么呢。。。和这代码有啥关系。。。= =!
内部类访问特点:
1,内部类可以直接访问外部类中的成员。
2,外部类要访问内部类,必须建立内部类的对象。
内部类能直接访问外部类中成员,是因为内部类持有了外部类的引用,即外部类名.this。
内部类也可以存放在局部位置上,但是内部类在局部位置上只能访问局部中被final修饰的局部变量。
内部类的成员不可以是static的,如果有,类自己也得是static的,如果是static的,在使用这个静态内部类的时候不需要实例化外部类,直接把Outer.Inner当成外部类使用。
作者: chensc    时间: 2014-4-7 12:51
学习学习!
作者: 征服    时间: 2014-4-7 16:31
嗯,谢谢!




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