内部类精讲

来源:互联网 发布:会务软件 编辑:程序博客网 时间:2024/06/11 00:33

内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类的成员变量。内部类可以定义在外部类方法的内部,也可以定义在外部类方法的外部。

例如:

public class Out

{   

      int n = 0;

        public void list()

          {     

                   int m = 0;

                       class Inter   //方法体内部定义类

                          {

                               public void method()

                                {

                                       n = 2;

                                   }

                           }

                      }

              public class Inter1    //方法体外部定义类

              {

                }

}

在方法体外面定义的类可以是共有类型、似有类型、保护类型以及默认的类型,这就好像是外部类的成员变量。对于这种情况在创建内部类时需要首先创建外部类的实例对象,然后再由外部实例对象去创建内部类。

例如:Out out = new Out();

       out.Inter1 inter = out.new Inter1();

在方法体内部定义的类前面不能有访问类型修饰符,这些类就好像方法体内部的局部变量一样,他们对其他类是不可见的,其他类无法引用这种内部类。但是这些类的实例对象可以传递给其他类访问。这种内部类必须先定义后使用。这些类可以访问方法体内部的局部变量,但是这些局部变量必须用final修饰符修饰。

最后,如果在方法体外部定义的类前面加上static关键字,那么这个类就变成Static Nested Class,它就不再具有内部类的特征,它与普通类在运行和功能上没有任何区别。只是在编程引用上有一些差别。它可以定义成多种类型。普通类只能定义成公共以及默认的类型。在外面引用这种类时使用外部类名.内部类名的方式。这种类不能直接访问外部类的非静态成员变量,只有生成实例对象后由实例对象访问非静态成员变量。在静态方法中定义的类也属于这种类,但是不能在类前面加static关键字。

  

0 0
原创粉丝点击