为了账号安全,请及时绑定邮箱和手机立即绑定

请问成员内部类和方法内部类的区别是什么?好混乱

请问成员内部类和方法内部类的区别是什么?好混乱

正在回答

2 回答

1.成员内部类:

class Outer {
    class Inner{
    
    }
}

编译上述代码会产生两个文件:Outer.class和Inner.class


2.方法内部类:

把类放在方法内

class Outer {
    public void doSomething(){
        class Inner{
        public void seeOuter(){
        }
        }
    }
}

(1)方法内部类只能在定义该内部类的方法内实例化,不可以在此方法外对其实例化。

(2)方法内部类对象不能使用该内部类所在方法的非final局部变量。

因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。


1 回复 有任何疑惑可以回复我~
#1

慕后端0385330 提问者

谢谢你
2015-03-06 回复 有任何疑惑可以回复我~

成员内部类是直接定义在类中的类,和成员变量和方法并列;而方法内部类是定义在方法中的类。例如:

class Outter{
    private int id;
    // 这个是成员内部类,与成员变量和方法地位同等
    class MemberInner{
        ……
    }
    private void say(){
        ……
    }
    private void print(){
        // 这个是方法内部类,定义在方法内部
        class MethodInner{
            ……
        }
    }
}


0 回复 有任何疑惑可以回复我~
#1

慕后端0385330 提问者

谢谢你
2015-03-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问成员内部类和方法内部类的区别是什么?好混乱

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信