一、局部内部类

1.局部内部类等同于局部变量

2.局部内部类在访问局部变量的时候,局部变量必须使用final修饰。

3.举个例子:


package com.bjpowernode.java_learning;

​

public class D59_1_LocalInnerClass {

  public static void main(String[] args) {

    D59_1_LocalInnerClass d1 = new D59_1_LocalInnerClass();

    d1.m1();

  }

  //方法

  public void m1() {

    final int i = 10;//如果不加final的话,这个变量就会变了,那我们执行内部类中的

    //方法的时候,里面用到i的话,值就不能确定了

    //局部内部类

    //局部内部类不能访问控制权限修饰符修饰

    class InnerClass59 {

      //内部类不能有静态

//      public static void m1() {}

      //成员方法

      public void m2() {

        System.out.println(i);

      }

    }

    InnerClass59 inner = new InnerClass59();

    inner.m2();

  }

}

​

二、匿名内部类

1.匿名内部类:指的是类没有名字

2.举例

package com.bjpowernode.java_learning;

​

public class D59_2_AnonymousInnerClass {

  public static void main(String[] args) {

//    test(new CustomerService59)//这种调用方法是不对的,因为接口是不能创建对象的

    CustomerServiceImp1 c1 = new CustomerServiceImp1();

    test(c1);

    //接下来使用匿名内部类来进行创建,这是只需要保留接口就行,下面的接口实现的类可有可无了

    test(new CustomerService59() {

      public void logout(){

        System.out.println("再一次退出了");

      }

    });

  }

  //静态方法

  public static void test(CustomerService59 cs) {

    cs.logout();

  }

}

interface CustomerService59{

  void logout();

}

class CustomerServiceImp1 implements CustomerService59{

  public void logout(){

    System.out.println("系统已经退出了");

  }

}

3.优点:可以少定义一个类,缺点就是不可以重复使用类,而且形式上不够简洁明了,易错。

三、源码:

D59_1_LocalInnerClass.java

D59_2_AnonymousInnerClass.java

地址:

https://github.com/ruigege66/Java/blob/master/D59_1_LocalInnerClass.java

https://github.com/ruigege66/Java/blob/master/D59_2_AnonymousInnerClass.java

2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

Java连载59-局部内部类、匿名内部类的更多相关文章

  1. C#的匿名委托 和 Java的匿名局部内部类

    .NET:C#的匿名委托 和 Java的匿名局部内部类 目录 背景实验备注 背景返回目录 这几天重温Java,发现Java在嵌套类型这里提供的特性比较多,结合自身对C#中匿名委托的理解,我大胆的做了一 ...

  2. Java基础进阶:内部类lambda重点摘要,详细讲解成员内部类,局部内部类,匿名内部类,Lambda表达式,Lambda表达式和匿名内部类的区别,附重难点,代码实现源码,课堂笔记,课后扩展及答案

    内部类lambda重点摘要 内部类特点: 内部类可以直接访问外部类,包括私有 外部类访问内部类必须创建对象 创建内部对象格式: 外部类.内部类 对象名=new外部类().new内部类(); 静态内部类 ...

  3. Java连载58-静态内部类、成员内部类详解

    一.内部类的分类: (1)静态内部类(2)成员内部类(3)局部内部类(4)匿名内部类 二.静态内部类 1.静态内部类可以等同的看做是静态变量 内部类的重要作用:可以访问外部类中的私有数据 2.静态内部 ...

  4. .NET:C#的匿名委托 和 Java的匿名局部内部类

    背景 这几天重温Java,发现Java在嵌套类型这里提供的特性比较多,结合自身对C#中匿名委托的理解,我大胆的做了一个假设:Java的字节码只支持静态嵌套类,内部类.局部内部类和匿名局部内部类都是编译 ...

  5. Java中的局部内部类

    package Smoke; public class Inner { private int num = 3; class Limian{ public void show(){ //内部类可以访问 ...

  6. Java学习笔记:内部类/匿名内部类的全面介绍

    编写java程序时,一般一个类(或者接口)都是放在一个独立的java文件中,并且类名同文件名(如果类是public的,类名必须与文件名一致:非public得,无强制要求).如果想把多个java类放在一 ...

  7. JAVA中内部类(匿名内部类)访问的局部变量为什么要用final修饰?

    本文主要记录:在JAVA中,(局部)内部类访问某个局部变量,为什么这个局部变量一定需要用final 关键字修饰? 首先,什么是局部变量?这里的局部是:在方法里面定义的变量. 因此,内部类能够访问某局部 ...

  8. Java的四种内部类

    Java的四种内部类包括如下: 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类: 定义在另一个类(外部类)的内部,而且与成员方法和属性平级叫成员内部类,......相当于外部类的非静态方法 ...

  9. Java基本概念:内部类

    一.简介 描述: 很多时候我们创建类的对象的时候并不需要使用很多次,每次只使用一次,这个时候我们就可以使用内部类了. 内部类不是在一个java源文件中编写两个平行的类,而是在一个类的内部再定义另外一个 ...

  10. java的四种内部类详解

    引言 内部类,嵌套在另一个类的里面,所以也称为:嵌套类; 内部类分为以下四种: 静态内部类 成员内部类 局部内部类 匿名内部类 一.静态内部类 静态内部类: 一般也称"静态嵌套类" ...

随机推荐

  1. selenium无界面执行和反爬

    selenium无界面执行和反爬 无界面执行 from selenium import webdriver from selenium.webdriver.chrome.options import ...

  2. C语言l博客作业05

    问题 回答 这个作业属于哪个课程 C语言程序设计ll 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/9830 我在这 ...

  3. java8 按两个属性分组,并返回扁平List; stream排序

    --------------- java8 按两个属性分组,并返回扁平List /** * 设置大区小区分组排序 * @param dtoList */ private List<Perform ...

  4. php方法注释

    注释格式 <?php /** * @method 发送邮件 * @url email/send?token=xxx * @http POST * @param token string [必填] ...

  5. WebGPU学习(三):MSAA

    大家好,本文学习MSAA以及在WebGPU中的实现. 上一篇博文 WebGPU学习(二): 学习"绘制一个三角形"示例 下一篇博文 WebGPU学习(四):Alpha To Cov ...

  6. 转战C#_001

    ---------------尽量用最少的语言描述 C# 世界里的所有事物------------------- 1. C#(pronounced "C-sharp") is an ...

  7. 输入URL到页面渲染

    输入网址回车或者刷新页面到页面传染出来的整个流程 DNS 解析 HTTP三次握手 -> TCP/IP连接 浏览器发送请求 服务器返回请求的文件 (html) 浏览器渲染 1. DNS 解析 查找 ...

  8. [vue]初探生命周期

    Vue 实例从创建到销毁的过程,就是生命周期.也就是从开始创建.初始化数据.编译模板.挂载Dom→渲染.更新→渲染.卸载等一系列过程,我们称这是 Vue 的生命周期. 一.创建/销毁,缓存 1.cre ...

  9. firefox浏览器写xpath

    最近在学xpath发现Firefox浏览器不支持xpath定位页面元素 百度为例: F12 页面前端代码  输入最简单的xpath发现并不能定位元素 解决方案:添加 Try Xpath 这个插件,因为 ...

  10. autocad 二次开发 最小包围圆算法

    autocad 二次开发 最小包围圆算法 主要实现了在模型空间下的得到一个包围所有图元的最小圆,该算法的思路是这样:1.从点集中随机选出两个点作为直径对圆进行初始化.2.判断下一个点p是否在圆中,如果 ...