一、局部内部类

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. 算法上机题目mergesort,priority queue,Quicksort,divide and conquer

    1.Implement exercise 2.3-7. 2. Implement priority queue. 3. Implement Quicksort and answer the follo ...

  2. python-模块,异常,环境管理器

    模块 Module 什么是模块: 1.模块是一个包含有一系列数据,函数,类等组成的程序组 2.模块是一个文件,模块文件名通常以.py结尾 作用: 1.让一些相关数据,函数,类等有逻辑的组织在一起,使逻 ...

  3. 2019-2020-11 20199304 《Linux内核原理与分析》 第十二周作业

    ShellShock攻击实验 一.实验简介 2014年9月24日,Bash中发现了一个严重漏洞shellshock,该漏洞可用于许多系统,并且既可以远程也可以在本地触发 二.预备知识 1.shells ...

  4. SwiftyUserDefaults-封装系统本地化的框架推荐

    // // ViewController.swift // Test4SwiftyUserDefaults // Copyright © 2017年. All rights reserved. // ...

  5. Python报错ERROR: Command errored out with exit status 1:

    解决方法: 1.以管理员身份打开cmd 2.pip install robotframework-AutoItLibrary (本次安装时Python基于3.7.3,pip为最新版本) 3.安装成功

  6. 常用的iOS第三方资源

    一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa pod 'ReactiveCocoa', '~> ...

  7. Java修炼——XPATH 技术_快速获取节点

    准备资源 1) DOM4J 的 jar 包 2) Jaxen 的 jar 包 3) XPATH中文文档 XPATH技术是为了将获取结点变得更简单,更方便而设计的.是在DOM4J的基础上完成的.因此需要 ...

  8. 数据库Oracle和MySQL 的不同

    实例区别: MySQL是轻量型数据库,开源免费.Oracle收费,这个不是重点,,重点是它贵. MySQL一个实例可以操作多个库,而Oracle一个实例只能对应一个库. MySQL安装只有300多兆, ...

  9. HDU1847 Good Luck In CET4 Everybody

    大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载的当代大学生,Kiki和Cici更懂得考 ...

  10. HDU-1595Find the longest of shortest(最短路径的最长路Dijkstra+记录路径)

    Marica is very angry with Mirko because he found a new girlfriend and she seeks revenge.Since she do ...