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

内部类有:

  1. 成员内部类

  2. 局部内部类(匿名内部类)

============================================

成员内部类

定义在成员位置的类

内用外,随意访问 ; 外用内,需要内部类对象

如何使用成员内部类

1. 间接方式: 通过外部类对象调用外部类方法,里面间接使用内部类

2. 直接方式: 

外类名.内类名  对象名  =  new  外类名().new  内类名(); :

内部类重名变量的访问

内部类的局部变量: 就近原则

内部类的成员变量: this.变量名

外部类的成员变量: 外类名.this.变量名

===========================================

局部内部类

一个类定义在一个方法的内部

"局部" : 只有在当前所属的方法可以使用它,出了方法就不能用了

局部内部类,如果访问所在方法的局部变量,那么这个局部变量必须是"有效final的"

注: 从Java 8 开始,只要局部变量事实不变,那么final关键字可以省略

===========================================

 匿名内部类

如果接口的实现类(或者父类的子类)只需要用一次,那么这种情况下就可以省略掉该类的定义,而改为使用"匿名内部类"

格式 :

  接口名  对象名  =  new  接口名() {

    //覆盖重写所有抽象方法

  };

解析 :

1.new 代表创建对象的动作

2.接口名称就是匿名内部类需要实现哪个接口

3.{ ... } 是匿名内部类的内容

注意 :

1.匿名内部类在创建对象时,只能使用唯一一次

2.注意匿名内部类和匿名对象的区别

匿名内部类省略的是 实现类/子类名称 , 匿名对象省略的是 对象名称

===========================================

类的权限修饰符

1. 外部类: public default

2. 成员内部类: 都可以

3. 局部内部类: 什么都不能写

原文地址:https://www.cnblogs.com/bushishucai/p/9535755.html