---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ----------------------
内部类的位置
//嵌套在另外一个类中
class Outer{
void OuterFun(){
}
class Inner{
void InnerFun(){
}
}
}
//嵌套在方法中
class Outer1{
void function(){
class Inner{
}
}
}
内部类与外部类的互访
//访问内部类,如上图
Outer.Inner=new Outer().Inner();
//访问静态内部类
class Outer2{
class Inner{
void InnerFun(){
}
}
}
运行:Outer2.Inner in=new Outer2.Inner();
内部类可以直接访问外部类成员,包括被private修饰的成员。
静态内部类不可以直接访问外部类中的非静态成员。
局部内部类中的方法可以直接访问外部类中的成员,因为默认有一个Outer.this.成员的引用,但是不可以访问局部中的变量,除非这个局部变量被final修饰。因为方法生命周期在它执行完后就结束了,变量也会随之释放。
匿名内部类
匿名内部类是一种简写方式,即没有名字的类。
因为本身就是一种简化格式,所以在创建匿名内部类的时候,匿名内部类的方法不宜过多,看起来也比较简洁。
格式: new 父类或接口名{ 子类代码 }
//定义一个抽象类,然后在Outer类中以匿名内部类的形式继承复写这个抽象类,并调用方法
abstract AbsDemo{
abstract void function();
}
class Outer{
public static void main(String[] args){
new AbsDemo{
void function(){
System.out.println("this is a simple function");
}
}.functin();
}
}