黑马程序员-内部类

来源:互联网 发布:淘宝权重查询 编辑:程序博客网 时间:2024/05/23 19:15

---------------------- android培训、java培训、期待与您交流! ----------------------

内部类:在类中定义的类称为内部类,内部类分为成员内部类,局部内部类以及匿名内部类。

在一个类的内部直接定义的类,称为成员内部类,语法格式为:

Public class OuterClass  //外部类

{

         Privateclass InnerClass  //内部类

{

         //…..

}

1.当内部类定义在外部类的成员位置上,而且非私有,可以在外部类其它类中,就可以直接建立内部类对象。格式为:

外部类名.内部类名变量名 =外部类对象.内部类对象;

Outer.Inner in  = new Outer().new Inner();

2.当内部类在成员位置上,就可以被成员修饰符所修饰。

比如,private  将内部类在外部类中所封装,提高了安全性。

Static :内部类就是具备了static的特性。

当内部类被static修饰后,只能直接访问外部类中的static成员,出现了访问局限性。

在外部其他类中,如何直接访问static内部类的非静态成员呢?

new Outer.Inner().function();

在外部其他类中,如何直接访问static内部类的静态成员呢?

                   uter.Inner.function();

 

         注意:当内部类中定义了静态成员,该内部类必须是static的。

                     当外部类中的静态方法访问内部类时,内部类也必须是static的。

 

 

 

        

当描述事物时,事物的内部还有事物,该事物用内部类来描述。

因为内部事务在使用外部事物的内容。

class Outer

{

         privatestatic  int x = 3;

 

        

         staticclass Inner//静态内部类

         {

                   staticvoid function()

                   {

                            System.out.println("innner:"+x);

                   }

         }

 

         staticclass Inner2

         {

                   voidshow()

                   {

                            System.out.println("inner2show");

                   }

         }

 

         publicstatic void method()

         {

                  //Inner.function();

                   newInner2().show();

         }

 

}

 

 

class InnerClassDemo2

{

         publicstatic void main(String[] args)

         {

                   Outer.method();

                   //Outer.Inner.function();

                   //newOuter.Inner().function();

                   //直接访问内部类中的成员。

//               Outer.Innerin = new Outer().new Inner();

//               in.function();

         }

}

内部类定义在局部时,

1,不可以被成员修饰符修饰

2,可以直接访问外部类中的成员,因为还持有外部类中的引用。

         但是不可以访问它所在的局部中的变量。只能访问被final修饰的局部变量。

*/

class Outer

{

         intx = 3;

 

         voidmethod(final int a)

         {

                   finalint y = 4;

                   classInner

                   {

                            voidfunction()

                            {

                                     System.out.println(y);

                            }

                   }

        

                   newInner().function();

                  

         }

}

 

 

class InnerClassDemo3

{

         publicstatic void main(String[] args)

         {

                   Outerout = new Outer();

                   out.method(7);

                   out.method(8);

         }

 

}

 

 

 

---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

原创粉丝点击