JAVA内部类

在类A的里面或者是中间,定义一个B类那么这个B类就是【内部类】也可以叫作【嵌套类】;

相对来说,B就是A的【内部类】;反知A就是B的【外部类】;

             

内部类也可以分为多种形式,与变量非常类型:

1、内部类的特点:

  1. 内部的类仍然是一个【独立的类】,编译之后会被编译成独立的【.class文件】,但是会在外面冠以外部类的【类名】和【$】符号。

编译后的文件命名:【外部类的包名】+【.类名】+【$】+【内部类的名称】

  1. 内部类是不能用普通的方式访问的;【内部类】是【外部类】的一个【成员】,这个【成员】可能是【实列的成员变量】,也可以是【静态的成员变量】,然后就是【内部类】可以自由访问【外部类的成员变量】,无论是不是【private】私有的。
  1. 如果【内部类】声明为【静态的】,就不能随便访问【外部类的成员变量】,只能访问【外部类】的【静态成员变量】。

不能随便访问外部类实列的成员变量视图:

  1. 内部类的通用处
  1. 【外部类】只有两个访问等级:【public】和【private】;

     【内部类】有四个访问等级:【public】、【protrcted】、【private】和【默认】,当成一个【成员变量】都可以使用;

  • JAVA实列内部类、JAVA静态内部类、JAVA局部内部类、JAVA匿名内部类

JAVA实列内部类:

定义:【实列内部类】是指没有【static】修饰的内部类,直接在类里面定义一个类。

实列内部类视图:

  1. 在【外部类】的【静态方法】以及【外部类以外】的【其它类中】,必须通过【外部类的实列】来创建【内部类的实列】。
  2. 在【实例内部类】或【实列类当中】,可以访问外部类的【所有成员】。
  3. 在外部类中【不能直接访问】内部类的成员,必须通过【内部类的实列】去访问。
  4. 【外部类的实列】与【内部类的实列】是一个【一对多】的关系
  5. 在【实力内部类中】不能定义【static】成员,除非同时使用【final】和【static】修饰

正确写法视图:

JAVA静态内部类:

  1. 在创建【静态内部类的实列】时,不需要创建【外部内部类的实列】。、
  2. 【静态内部类中】可以定义【静态成员】和【实列成员】。

外部类以外的其它类需要通过【完整的类名】----》【外部类的类名.内部类.里面的东西】 ,才能访问到【静态内部类中的静态成员】;如要访问【静态内部中的实列成员】

,则需要通过【静态内部类的实列】 。

  

  1. 【静态内部类】可以直接访问【外部类的静态成员】,如要要访问【静态内部类的实列成员】,则需要通过【静态内部类的实列】去访问。

注意事项:

  1. 【实列内部类】是可以直接调用【外部类的实列变量/实列成员】实例方法、类方法,实列内部类去访问外面是没有限制的 。
  2. 实列内部类来说以外部类去访问它就复杂一点
  3. 【静态内部类】去访问【外部的静态成员】,是没有问题的,但是它是无法直接去访问外部类的实列成员的,因为【静态内部类】是划分在静态区域那一块的。

JAVA局部内部类:

   定义:局部内部类是指在一个【方法(或代码块)】中定义内部类

  1. 【局部内部类】与【局部变量】一样,不能使用任何的修饰符
  2.  局部内部类只在【当前的方法】或者【代码块的方法】中有效
  3. 【局部内部类】中不能定义【static】成员
  4. 局部内部类中还可以【包含】内部类,但是【内部类】也不能使用任何的修饰符
  5. 在【局部内部类】中可以访问【外部类的所有成员】
  6. 在【局部内部类】中只能访问【当前方法】中【final】类型的【参数】与 【变量】。

如果【方法】中的【成员】与【外部类】中的【成员】同名,则可以使用:【最外面类的类名.this.自己定义的类名】

匿名内部类:

定义:匿名内部类是指【没有类名】的【内部类】,

用法:

  1. 匿名内部类可以定义在成员哪里也可以在局部哪里,但是大部分都是放在【局部当中】
  2. 匿名类大部分都是和【抽象类】或者【接口】、【类】来搭配使用

局部内部类的特点:

  1. 【匿名内部类】和【局部内部类】是一样的,可以访问【外部类】的【所有成员】;如果【匿名内部类】位于一个【方法中】,则【匿名内部类】也只能防问在【当前方法中】用【final】类型修饰的【局部变量】和【参数】。
  2. 【匿名类】可以使用【非静态化代码块】进行初始化的操作。

非静态化代码块视图:

  1. 匿名内部类的【非静态代码块】会在【父类】的【构造方法】之后被执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值