内部类

内部类

一、内部类种类:

成员内部类、局部内部类、匿名内部类,静态内部类;

1.1成员内部类

类中定义的类,成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员);

当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,外部类的同名成员,需要以下面的形式进行访问:

外部类.this.内部类
外部类.this.成员方法

内部类对象可以拥有private访问权限、protected访问权限、public访问权限

private修饰:只能外部类访问;

protected修饰:只能在同一个包下或者继承外部类的情况下访问;

public修饰:任何地方都能访问;

默认:则只能在同一个包下访问;

1.2局部内部类

定义在一个方法或者一个作用域里面的类

内部类编译的时候,

1.3匿名内部类

如事件监听

new OnClickListener() {
             
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 
            }
        }

1.4静态内部类

能使用外部类的非static成员变量或者方法

二、内部类引用外部类

编译器会默认为成员内部类添加了一个指向外部类对象的引用;

局部内部类和匿名内部类只能访问局部final变量:

1、因为生命周期不一样,本地变量,在方法结束前就结束,而对象是可能一直存在的,因此当一个对象访问一个已经销毁的变量会出现问题;如果基本数据变量,为了保证copy的完整性,final保证了复制值不变的特性;如果是引用对象,则指向同一个对象,不允许指向另外一个对象,因此,匿名类和局部内部类访问外部局部变量,需要变量进行final修饰。

final修饰后,对于匿名内部类对象要访问的所有final类型局部变量,都拷贝成为该对象中的一个数据成员,且与原局部变量的值始终一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值