---------------------- 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