Java内部类和匿名类

内部类的详细描述

(1).概述:在一个类的内部定义的另一个类,内部类的主要作用是将逻辑上相关联的类放到一起。类体内部的类为内部类,包含内部类的类为外部类。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。
在这里插入图片描述
(2)、内部类定义上可分为三类:
1.在外部类中直接定义的内部类,与外部类成员处于同一级;
2.在一个外部类的方法中定义的内部类;
3.匿名内部类。
(3)、表现形式上分为:
⒈成员内部类
⒉静态内部类
⒊局部内部类
⒋匿名内部类
(4)、访问注意事项:
1.内部类可以直接访问外部类的字段和方法。
2.外部类访问内部类成员需要通过其对象来访问。
3.可以相互访问其私有的成员(注意)
例1:

在这里插入图片描述
在这里插入图片描述
编译结果:
在这里插入图片描述
编译器生"外部类$内部类.class"文件
在这里插入图片描述

1.成员内部类

(1)、在其它类中(非外部类)创建成员内部类对象
格式:外部类名.内部类名 对象名 = 外部类对象.new 内部类名();
OuterClass.InnerClassA inner = out.new InnerClassA();
例2:
在这里插入图片描述
在这里插入图片描述
编译结果:
在这里插入图片描述
注意:
new InnerClass().val
等价于
InnerClass inner = new InnerClass();
inner.val;

2.静态内部类

(1)、用static修饰的内部类就是静态内部类。静态内部类能直接访问外部类的静态成员,而只能通过外部类的对象访问外部类的实例成员。
(2)、在其它类(非外部类)中创建静态内部类对象
格式:外部类名.内部类名 对象名 = new 外部类对象.内部类名();
OuterClass.InnerStaticClass a = new OuterClass.InnerStaticClass();
例3:
在这里插入图片描述
在这里插入图片描述
编译结果:
在这里插入图片描述

3.局部内部类

概述:定义在方法中的类称之为内部类。类名不能被private、protected、public、static等修饰,但可以被final或abstract修饰,且访问权限仅局限在方法中。
注意:局部内部类只能访问被定义为final或static的外部变量。
例4:

在这里插入图片描述
在这里插入图片描述
编译结果:
在这里插入图片描述

4.匿名内部类

概述:定义在类和方法中,不取名字的类,在定义类的同时又new一个对象的类称之为匿名类。
特点:1.不取类名,直接用父类的名字或所实现接口的名字。
2.类名前面不能有修饰符。
3.类中不能定义构造方法,因为它没有名字。在构造对象时,使用父类的构造方法。
如果实现接口,则接口后的圆括号中不能带参数。
格式:
new 类名或接口名(){…}
例5:
在这里插入图片描述

在这里插入图片描述
编译结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值