一、局部内部类

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. Chapter 02—Creating a dataset(Part1)

    一. 数据集 1. 在R语言中,进行数据分析的第一步是创建一个包含待研究数据并且符合要求的数据集. · 选择装数据的数据结构 · 把数据装入数据结构中 2. 理解数据集 (1)数据集通常是矩形的数据列 ...

  2. php踩过的那些坑(5)浮点数计算

    一.前方有坑 php在使用加减乘除等运算符计算浮点数的时候,经常会出现意想不到的结果,特别是关于财务数据方面的计算,给不少工程师惹了很多的麻烦.比如今天工作终于到的一个案例: $a = 2586; $ ...

  3. 顺序表-C语言实现

    顺序存储线性表的结构体: #define MAXSIZE 100 //数组最大长度 typedef int ElemType; //元素类型 typedef struct //定义线性表结构体 { E ...

  4. 成为高手前必懂的TCP干货【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

  5. Tensorflow Serving Docker compose 部署服务细节(Ubuntu)

    [摘要] Tensorflow Serving 是tf模型持久化的重要工具,本篇介绍如何通过Docker compose搭建并调试TensorFlow Serving TensorFlow Servi ...

  6. 使用jieba分析小说太古神王中,男主更爱谁?去文章中找答案吧!#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  7. DevOps on DevCloud|如何实现应用接口的混合驱动测试

    引言:在"DevOps能力之屋(Capabilities House of DevOps)"中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力. ...

  8. 【Java库】如何使用优秀的加密库Jasypt来保护你的敏感信息?

    1 简介 今天我们介绍一个Java库-Jasypt,全称为Java Simplified Encryption,用于加密解密.它能够让开发者用花费最小的工作而把加密集成到项目中,并且不需要对加密/解密 ...

  9. luogu P3939 数颜色 |vector

    题目描述 小 C 的兔子不是雪白的,而是五彩缤纷的.每只兔子都有一种颜色,不同的兔子可能有 相同的颜色.小 C 把她标号从 1 到 n 的 n 只兔子排成长长的一排,来给他们喂胡萝卜吃. 排列完成后, ...

  10. APP 框架搭建

    在开发一款app前必须先把框架搭建好,这样能避免代码混乱,多人开发时遇到bug难以解决. 构建MVC整体框架的缺点是会导致VC代码量过大,也存在一些不足.借鉴了网上牛人的思路后,https://www ...