美文网首页
2020-09-12 Java内部类、匿名内部类(重要)

2020-09-12 Java内部类、匿名内部类(重要)

作者: flynnny | 来源:发表于2020-09-12 22:50 被阅读0次

内部类

一个类包含另一个类。被包含的类叫内部类。(身体和心脏的关系)
分类:
1.成员内部类
2.局部内部类(包含匿名内部类)

1.成员内部类

格式:

修饰符 class 外部类名称 {
       修饰符 class 类名称{
               //...
        }
       //...
}

class结构:

内部类.png
注意:内用外,随意访问;外用内,需要内部类对象

内部类的使用:
1.间接方式:在外部类方法中,使用内部类;然后外面调用外部类的方法;
2.直接方式:外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称();

同名变量的访问:外部类名称.this.外部类成员变量名

内部类2.png

2.局部内部类(定义在一个方法内部,只有当前方法才能使用它)

格式:

修饰符 class 外部类名称 {
       修饰符 返回值类型 外部类方法名称(参数列表){
               class  局部内部类名称{
                       //...
               }
        }
       //...
}
内部类3.png

局部内部类的final问题:如果访问所在方法的局部变量,那么这个局部变量必须是【有效final的】!!!(备注:从Java 8+开始,只要局部变量事实不变,那么final关键字可省略)

原因:
1.new出来的对象在堆内存中;
2.局部变量跟着方法走的,在栈内存中;
3.方法运行结束后,立即出栈,局部变量就会立刻消失;
4.但new出来的对象在堆中持续存在,知道垃圾回收消失。


内部类4.png

3.匿名内部类(重要)

格式:

接口名称 对象名 = new 接口名称(){
        //覆盖重写所有抽象方法
};
内部类5.png
如上图
对 new 接口名称(){...}解析
1.new代表创建对象的动作;
2.接口名称就是匿名内部类需要实现那个接口;
3.{...}这才是匿名内部类的内容。
注意事项
1.匿名内部类,在创建时只能使用唯一一次,如果希望多次创建内容一样的对象,就需要定义实现类了。
2.匿名内部类是省略了【实现类/子类名称】,但是匿名对象省略了【对象名称】,两者不是一回事!!!

相关文章

  • 内部类

    成员内部类 局部内部类(定义在方法内和定义在作用域内的类) 匿名内部类

  • Java 内部类

    内部类包括成员内部类、方法内部类、*静态内部类、匿名内部类*。 内部类的作用 由于内部类的实现和外部类没有关系,内...

  • Java内部类

    Java内部类,简单来说就是将一个类定义在另一个类或者方法里面,主要分为成员内部类,局部内部类,匿名内部类和静态内...

  • Java 内部类、静态内部类、方法内部类(未完待续)

    内部类 什么是内部类?内部类其实就是在一个类中创建的类。内部类有四种: 成员内部类 静态内部类 局部内部类 匿名内...

  • java 内部类

    一般有四种内部类的使用方式: 嵌套的内部类 方法内的内部类 静态内部类 匿名内部类 什么时候用内部类: 有时候明显...

  • java之内部类(InnerClass)详解

    参考文章 java之内部类(InnerClass)----非静态内部类、静态内部类、局部内部类、匿名内部类

  • 热修复原理拆解个人笔记(一)

    源于sophix文档: 内部类/外部类java编译器对内部类的处理 匿名内部类匿名内部类 类加载类加载时间 fin...

  • Java匿名内部类

    导语 学完匿名内部类就懂的情书。 主要内容 接口与抽象类和匿名内部类的关系 具体内容 匿名内部类也就是没有名字的内...

  • java中的匿名内部类总结

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内...

  • 内部类

    内部类可以分为:非静态内部类;静态内部类;匿名内部类。 一、内部类 首先要说,Java为什么要使用内部类?java...

网友评论

      本文标题:2020-09-12 Java内部类、匿名内部类(重要)

      本文链接:https://www.haomeiwen.com/subject/ylpiektx.html