内部类

内部类的几个应用点:
1.访问该类定义所在的作用域中的数据,包括私有数据
2.可以对同一个包中的其他类隐藏起来
3.匿名内部类可以应用于回调函数

关于数据访问

内部类可以直接访问其外围类的所有数据,包括私有数据。
在内部类之外、外围类之内可以直接访问内部类,例如构造一个内部类对象:

object o = new InnerClass();

也可以更准确地构造一个内部类对象:

object o = this.new InnerClass();

在外围类作用域之外引用内部类,采用这种形式:

OuterClass.InnerClass
关于局部内部类

内部类可以定义在局部方法之中,不能用public或private关键字声明,它的作用域被限定在局部方法之中,并且对外部世界完全隐藏
局部内部类既可以访问外围类的数据,也可以访问局部变量,注意必须是那些没有改变过的局部变量才可访问

关于静态内部类

当内部类不访问外部类的非静态数据时,可以把内部类声明为static静态内部类
对于非静态内部类,若要在外围类之外构造内部类对象,只能通过外围类对象调用构造器:

OuterClass.InnerClass o = outerClassObject.new InnerClass();

对于静态内部类,则可以通过外围类类名调用构造器:

OuterClass.InnerClass o = new OuterClass.InnerClass();

声明在接口中的内部类自动成为static和public的

关于匿名内部类

若只创建这个类的一个对象,就不必命名,这个类可以是接口,也可以是父类,如下:

//相当于创建了一个实现了接口的类
aInterface a = new aInterface(){...}
//相当于创建了一个继承了父类的类
aSuperClass a = new aSuperClass(){...}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值