标签:描述 div demo microsoft www add ros http sans
1、成员内部类是依附其外部类而存在的,如果要产生一个成员内部类,必须有一个其外部类的实例
2、成员内部类中不可以定义静态方法(如果内部类中定义了静态成员,该内部类也必须是静态的)
3、成员内部类可以声明为private的,声明为private的成员内部类对外不可见,外部不能调用私有成员内部类的public方法
4、成员内部类可以声明为public的,声明为public的成员内部类对外可见,外部也可以调用共有成员内部类的public方法
5、成员内部类可以访问其外部类的私有属性,如果成员内部类的属性和其外部类的属性重名,则以成员内部类的属性值为准
1、静态内部类中可以有静态方法,也可以有非静态方法
2、静态内部类只能访问其外部类的静态成员与静态方法
3、和普通的类一样,要访问静态内部类的静态方法,可以直接"."出来不需要一个类实例;要访问静态内部类的非静态方法,必须拿到一个静态内部类的实例对象
4、注意一下实例化成员内部类和实例化静态内部类这两种不同的内部类时写法上的差别
(1)成员内部类:外部类.内部类 XXX = 外部类.new 内部类();
(2)静态内部类:外部类.内部类 XXX = new 外部类.内部类();
局部内部类是定义在一个方法或者特定作用域里面的类
classOuter
{
int num =3;
Object method()
{
finalint x =9;
classInner
{
publicString toString()
{
return"show ..."+x;
}
}
Object in =newInner();
return in;//0x0045
// in.show();
}
}
classInnerClassDemo3
{
publicstaticvoid main(String[] args)
{
Outer out =newOuter();
Object obj = out.method();
System.out.println(obj);
}
}
abstractclassDemo
{
abstractvoid show();
}
classOuter
{
int num =4;
/*
class Inner extends Demo
{
void show()
{
System.out.println("show ..."+num);
}
}
*/
publicvoid method()
{
//new Inner().show();
newDemo()//匿名内部类。
{
void show()
{
System.out.println("show ........"+num);
}
}.show();
}
}
classInnerClassDemo4
{
publicstaticvoid main(String[] args)
{
newOuter().method();
}
}
classOuter
{
void method()
{
Object obj =newObject()
{
publicvoid show()
{
System.out.println("show run");
}
};
obj.show();//因为匿名内部类这个子类对象被向上转型为了Object类型。
//这样就不能在使用子类特有的方法了。
}
}
classInnerClassDemo6
{
publicstaticvoid main(String[] args)
{
newOuter().method();
}
}
classOuter
{
void method()
{
newObject()
{
publicvoid show()
{
System.out.println("show run");
}
}.show();
}
}
classInnerClassDemo6
{
publicstaticvoid main(String[] args)
{
newOuter().method();
}
}
标签:描述 div demo microsoft www add ros http sans
原文地址:http://www.cnblogs.com/fjson/p/6925969.html