成员内部类 局部内部类 匿名内部类

成员内部类:

成员内部类是在一个类的内部再生成一个类,相当于成员方法一样,所以叫成员内部类

成员内部类可以访问外部类中的成员,即使成员是privte,跟其它成员权限一样,但是在另一个包中的类想访问这个privte就是不行的,只能在一个包下才能访问

如果在另个一个包中的一个类,想使用这个内部类,就先需要导入外部类,再导入内部类。之后先生成外部类对象,再在此基础上再生成内部类对象

当外部类想访问静态内部类时,只需要导包导入静态内部类,然后直接正常new一个即可

内部类能访问外部类其实是因为,在内部类中有个外部类的引用,这个引用默认是隐藏的。其格式为:外部类名字.this ,在this前加入外部类名字的原因是怕和内部类this冲突

局部内部类:

在一个方法里写一个类就叫做局部内部类,局部内部类作用域和方法一样,出了方法就使用不了了,生命周期也是随着方法而存在

匿名内部类:

匿名内部类没有名字和构造方法,不能显示继承类和实现接口。下面这个图类b要实现接口,但是AnInterface ait = new AnInterface()这个看起来似乎像一个接口想生成一个接口对象,不过其实不是这个意思,这个new的其实就是匿名内部类。按理说应该写个类,比如Test t extends AnInterface{},然后这样实现接口里的方法,不过用内部类就不用再特意写个类然后继承实现接口。new后面跟着的不是接口,而是一个没有名字的类,就是内部类,这个内部类实现了接口,最后的分号不能忘掉;匿名内部类在抽象类上也是同理

猜你喜欢

转载自www.cnblogs.com/yudongxuan/p/11552925.html