Java成员内部类在项目中也是常常使用到,很多人不知道成员内部类是什么,下面是Java成员内部类的定义:
成员内部类指的是在某个类中,在方法之外的非静态类,被称之为Java成员内部类
如下就是java成员内部类的基本组成,代码如下:
class Outer{ //code class Inner{ //code } }
比如我们要开发一个成员内部类,我们要在外部类的方法中,调用成员内部类里面的msg()方法,而msg()方法又访问了外部类的私有成员,此时我们该如何做呢?请看下面的示例:
class TestMemberOuter1{ private int data=30; class Inner{ void msg(){System.out.println("data is "+data);} } public static void main(String args[]){ TestMemberOuter1 obj = new TestMemberOuter1(); TestMemberOuter1.Inner in = obj.new Inner(); in.msg(); } }
在上面的例子中,我们来思考一下Java成员内部类的内部工作做了哪些工作?
在内部类的情况下,java编译器创建了两个类文件,内部类的类文件名是“Outer $ Inner”,如果要实例化内部类,则必须先要创建外部类的实例,在这种情况下,内部类的实例是在外部类的实例中创建的,也就是说内部类具有了外部类的引用。
所以,这也就是inner内部类可以访问所有包括private外部类在内的外部类成员的原因。