JAVA基础——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)

成员内部类
静态内部类
局部内部类
匿名内部类
1、成员内部类(实例内部类、非静态内部类)


成员内部类中不能写静态属性和方法
实例化内部类,首先需要实例化外部类,通过外部类去调用内部类  
作用 

要想访问内部类中的内容,必须通过外部类对象来实例化内部类。
能够访问外部类所有的属性和方法,原理就是在通过外部类对象实例化内部类对象时,外部类对象 把自己的引用传进了内部类,使内部类可以用通过Outer.this去调用外部类的属性和方法,
2、静态内部类
使用你 static 修饰的内部类就叫静态内部类。
(注意:
static修饰成员变量:整个类的实例共享静态变量
static修饰方法:静态方法,只能够访问用static修饰的属性或方法,而非静态方法可以访问static修 饰的方法或属性
被static修饰了的成员变量和方法能直接被类名调用。
static不能修饰局部变量)
1、我们上面说的内部类能够调用外部类的方法和属性,在静态内部类中就不行了,因为静态内部类没有 了指向外部类对象的引用。除非外部类中的方法或者属性也是静态的。这就回归到了static关键字的用 法。(静态内部类不能直接访问外部类的非静态方法)

2、静态内部类能够直接被外部类给实例化,不需要使用外部类对象
            Outer . Inner inner = new Outer . Inner ();
3、局部内部类:
局部内部类是在一个方法内部声明的一个类
局部内部类中可以访问外部类的成员变量及方法
局部内部类中如果要访问该内部类所在方法中的局部变量,那么这个局部变量就必须是fifinal修饰的
局部内部类只能在自己的方法中用,因为局部内部类相当于一个局部变量,除了方法就找不到了。

 

4、匿名内部类
首先了解一下什么是匿名对象?


如果一个对象只要使用一次,那么我们就是需要 new Object().method() 。 就可以 了,而不需要给这个实例保存到该类型变量中去。这就是匿名对象。

 

匿名内部类跟匿名对象是一个道理,匿名内部类,我也只需要用一次,那我就不需要在类中先定义一个内部类,而是等待需要用的时候,我 就在临时实现这个内部类,因为用次数少,可能就这一次,那么这样写内部类,更方便。

1、匿名内部类需要依托于其他类或者接口来创建

如果依托的是类,那么创建出来的匿名内部类就默认是这个类的子类
如果依托的是接口,那么创建出来的匿名内部类就默认是这个接口的实现类。
2、匿名内部类的声明必须是在使用 new 关键字的时候
匿名内部类的声明及创建对象必须一气呵成,并且之后能反复使用,因为没有名字。

 

————————————————
本文为CSDN博主「上兵伐眸」的原创文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值