JAVA内部类概念

内部类:

内部类指的是在JAVA中可以将一个类定义在另一个类的内部
内部类可以定义在 类的内部(与类成员层次一致)
内部类可以定义在 方法/程序块内部(与类成员相差一个层次,与方法的局部变量同一个层次)。

1.成员内部类:

将一个类直接定义在类的里面,作为成员,与属性或方法层次一致
成员内部类可以与正常类一样,使用不同的修饰符来修饰
好处1:省略了一个 .java 文件。
好处2:成员内部类中可以访问外部类的所有成员,包括私有的

若想要在内部类中通过

对象.调用

外部类成员,要这样写

外部类.this.外部类成员

内部类存在后 源代码进行编译 产生一个字节码 外部类名$Inner内部类名.class

2.局部内部类

将一个类定义在方法/程序块里面,作为成员的内部结构,与临时的局部变量一个层次。
局部内部类像是一个局部的变量一样,不能用public protected private和static修饰,只能用abstract或final修饰。
命名:外部类名$1Inner内部类名,外部类名$2Inner内部类名.以此类
局部内部类,因为类是需要先编译的,编译后,字节码就确定了,由于变量的内容可以改变,所以要求局部内部类使用的变量只能是final修饰的。(因为变量可以改。比如在局部内部类A里使用了变量 a 。如果这个 a 不是final修饰的。那么如果 a 的值改了,那原先的字节码就不对了)

3.匿名内部类

interface Test{
		public void test();
}
public class Son implements Test{
		public void test(){}
}
Son son = new Son();  
// 一般来写是上面这样写
// 如果是匿名内部类,则下面这样写
Test t = new Test(){
		public void test(){}
};
// 其中Test()后面的{};包裹的是类体,是Test接口的子类,new出来的是匿名类的对象

开发中为了省略一个类文件,上面的写法比较常见
匿名内部类很特殊,只有类体,没有类的所有结构(修饰符,名字,继承,实现)
不能用任何修饰符来修饰,匿名内部类也没有构造方法。
可应用于对按钮进行事件绑定。

4.静态内部类

成员静态内部类
不需要外部类对象,通过正常的方式直接创建内部类
静态元素不能访问非静态成员(自己类和外部类)

整体展示:

在这里插入图片描述
在这里插入图片描述

1,3是比较常用的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值