java内部类总结

java内部类一般来说有4个大类

1.成员内部类:
成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括private成员和静态成员),当成员内部类拥有和外部类同名的成员变量或者方法时,会发生隐藏现象,在外部类中如果要访问成员内部类的成员,必须先创建一个成员内部类的对象,再通过指向这个对象的引用来访问,

成员内部类是依附外部类而存在的,也就是说,如果要创建成员内部类的对象,前提是必须存在一个外部类的对象,

内部类拥有和成员变量一样的权限;

2.局部内部类:
局部内部类是定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内,

局部内部类就像是方法里面的一个局部变量一样,是不能有public、protected、private以及static修饰符的;

这个不常用啊,

3.匿名内部类:
用的比较多,

匿名内部类也是不能有访问修饰符和static修饰符的,

匿名内部类是唯一一种没有构造器的类。正因为其没有构造器,所以匿名内部类的使用范围非常有限,大部分匿名内部类用于接口回调,一般来说,匿名内部类用于继承其他类或是实现接口,并不需要增加额外的方法,只是对继承方法的实现或是重写;

4.静态内部类:
静态内部类也是定义在另一个类里面的类,只不过在类的前面多了一个关键字static。静态内部类是不需要依赖于外部类的,这点和类的静态成员属性有点类似,并且它不能使用外部类的非static成员变量或者方法,这点很好理解,因为在没有外部类的对象的情况下,可以创建静态内部类的对象,如果允许访问外部类的非static成员就会产生矛盾,因为外部类的非static成员必须依附于具体的对象;

tips:
(1)成员内部类在构造时需要外部类的引用;

(2)局部内部类和匿名内部类只能访问局部final变量;

(3)静态内部类是不依赖于外部类的,静态内部类是不持有指向外部类对象的引用的;

(4)内部类使得多继承的解决方案变得完整;
便将于存在一定逻辑关系的类组织在一起,又可以对外界隐藏;
方便编写事件驱动程序;
方便编写线程代码;

(5)关于成员内部类的继承问题,一般来说,内部类是很少用来作为继承用的,但是当用来继承的话,要注意两点:
成员内部类的引用方式必须为 Outter.Inner;
构造器中必须有指向外部类对象的引用,并通过这个引用调用super();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值