zoukankan      html  css  js  c++  java
  • 分享知识-快乐自己:快速理解(Java内部类)

    1):成员内部类

    什么是内部类?:

      内部类就是在一个类中定义另一个类。

    定义语法:

    使用命令行查看编译 产生的文件:

    如何生成内部类对象?

    创建规则:内部类对象 需要先声明外部类对象。

    内部类以及外部类的成员变量、方法 的使用?

     

    上图所示:

    编译是可以通过的,语法上是没有错误的。

    其实这个地方很容易会产生一个错觉,就好像这个 i 也变成了 B的成员,那是不是说B作为A的内部类 B是不是继承了A那?(其实不是这样的 X)内部类和继承了关系一定要搞清楚,这两者并不是一样的。

    BA的内部类就意味着在B当中可以随意使用A当中的成员变量及方法。但是这不是意味着B继承了A

    B只是能够使用A中的成员变量;而B并不拥有A的成员

    为什么可以使用那?(观察以下图)

    当生成内部类对象的时候,它首先先生成了一个外部类对象。也就是说每一个内部类都和一个外部类的对象 所关联。

    上图所示:运行结果为 4 所用的就是 a对象里面的。(完整写法如下:)

    记住一点 内部类可以随意的使用外部类公共的成员。

    2):局部内部类

    特点:

    1、类被定义在一个方法体中 代码块中

    2、类上允许使用修饰符

    3、编译的class文件会有 $1 标识

    4、可以直接访问外部类的成员

    5、可以创建内部类对象,通过对象调用内部类方法,来使用局部内部类功能。

    下图所示:简单实现局部内部类。

    问题来了...

    会报错:num2 不是最终类型。

    局部内部类访问局部变量的注意事项:

    必须是 final修饰?

    为什么?

      因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立刻从堆内存中消失,还要使用那个变量。

      为了让数据还能继续被使用,就用final修饰,这样在堆内存里面存储的其实是一个常量值。通过反编译工具可以看一下。

    3):静态内部类

    静态内部类如何声明那?

      无非就是在内部的类上加上 static 关键字。

    特点如下:

    1、static 修饰

    2、可以有任意修饰符

    3、不能访问私有的静态内部类

    4、共有的内部类不依赖外部类对象,但是依赖外部类本身

    5、可以访问外部类的静态属性及方法

     

    使用静态内部类简单实现求最大值和最小值。

    4):匿名内部类

    所谓的匿名内部类是什么东西那?

      首先它是一个内部类,其次没有名字

    先看一个正常的流程案例:

    1):定义一个接口

    2):接口实现

    3):定义B 类【A 作为参数】

    4):调用运行

    另一种写法:(匿名)

    代码看起来有点可怕啰嗦,我们来解释一下。

      首先我们确认一点 fun()需要一个A类型的对象作为参数。

      这里我们写的是 new A()

    是不是有疑问,不是一直说接口不能new

      这里注意new A()后面的代码,大括号里面的这些代码和A的实现类中的几乎一模一样的几乎没有什么区别。这里只是打印的信息不一样。

    那它的区别在里那?

      主要区别在于它没有名字(称为匿名)那这个直接new的类A是不是在Test类里面 所以加起来就叫 内部匿名类。

      New 它就是生成这个内部匿名类的对象

    那么new的这个接口又是什么意思那?

      也就是说 Test 这个类要实现 A这个接口。

  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/mlq2017/p/10106543.html
Copyright © 2011-2022 走看看