学习日记-内部类,

来源:互联网 发布:魅族系统升级清除数据 编辑:程序博客网 时间:2024/06/04 19:28

什么是内部类:定义在一个类里面各个地方的类,在方法中的有名字的类叫局部内部类,没有名字的叫匿名内部类,两者的区别是匿名的没有类名就不能用构造函数初始化就是说只能用一次,生成一次对象。局部内部类是一个完整的定义可以有很多个对象。在方法外的有static 的叫静态内部类,就像是类的静态字段一样,和外部类的对象是无关的,药创建它只需要new OUTER.INNER(),他可以访问外部的静态方法和属性,要是想访问实例属性就要先创建一个外部类的对象。用对象的引用去访问。没有static的叫做实例内部类,是和外部类的对象绑定在一起的,所以需要先创建一个外部类对象,比如  new outer(). new inner()。类部类的对象一定绑定这一个外部类对象的引用,可以在内部类中用OUTER.THIS返回这个外部类的对象引用。         就想其他类的初始化一样,static内部类会在用到外部类的时候被加载进来,而非static内部类只有在创建这个内部类的对象或者调用这个内部类的static属性,方法的时候再被加载。   内部类一样是可以被继承的。         需要注意的地方若是在一个方法体中用到局部类或者匿名内部类的时候,这个类部类想要用到这个方法的参数或者方法中定义的局部变量,必须是final类型的(final实例变量可以只声明,然后在构造函数中初始化)。





内部类时干啥的:高内聚的封装,解决多继承(比如想要继承多个抽象类),闭包回调

0 0
原创粉丝点击