内部类:
/*
** 内部类:
** 建立在类中的类称为内部类;
** 内部类中的访问方式:
** 外部类若想访问内部类需简历内部类的对象方可访问;
** 内部类可以直接访问外部类中的成员和私有变量;
** 当内部类在外部类的成员位置时,可以被成员修饰符修饰;
** 如priva static。
** 当内部类用static修饰时:内部类可通过如下访问:
** new Outer.Inner().function();
** 如何直接访问static内部类中的静态成员;
** Outer.Inner.function();
** 注意:
** 非static内部类不能有静态成员(当内部类中定义了静态成员,内部类必为静态类)
** 当外部的静态方法访问内部类时,内部类也必须为静态方法;
** 什么时候使用内部类?
** 当描述事物时,事物的内部还有事物,该事物用内部类来描述;
** 内部事物在使用外部事物的内容;
*/
class Outer{
int num=1;
class Inner{
int num=2;
void function(){
num=3;
/*
** 不同位置三种变量的访问方式;
** 若没有局部成员和局部变量num,直接写num则表示外部成员;
*/
System.out.println("Inner::局部变量:"+num);
System.out.println("Inner::局部成员:"+this.num);
//当内部类用static修饰时,只能通过Out.this.num直接访问;
System.out.println("Inner::外部成员:"+Outer.this.num);
}
}
void method(){
//内部类的访问方式;
Inner in=new Inner();
in.function();
}
}
class InerClass{
public static void main(String[] args){
Outer ou=new Outer();
ou.method();
System.out.println("内部类的直接访问方式:");
Outer.Inner oi=new Outer().new Inner();
oi.function();
}
}
匿名内部类:
/*
** 匿名内部类: