Java基础知识学习:内部类

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

内部类引入介绍

  1. 可以将一个类的定义放在另一个类的定义内部,这就是内部类
  2. 内部类是一种非常有用的特性,因为它允许将一些逻辑相关的类组织在一起,并控制内部的类的可视性.内部类看起来像是一种代码隐藏机制,但是它了解外围类,并能与之通信,使用内部类写出的代码更加优雅清晰,虽然并不总是这样
  3. 内部类可以使用 public、default、protected 、private 以及 static 修饰。而外部顶级类(我们以前接触的类)只能使用 public 和 default 修饰。
  4. 内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为 Outer 的外部类和其内部定义的名为 Inner 的内部类。编译完成后会出现 Outer.class 和Outer$Inner.class 两个类的字节码文件。所以内部类是相对独立的一种存在,其成员变量/方法名可以和外部类的相同。

创建内部类

  1. 代码示例
    在这里插入图片描述
  2. 内部类作用
     内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
      内部类可以直接访问外部类的私有属性内部类被当成其外部类的成员。 但外部类不能访问内部类的内部属性

内部类的分类

  1. Java 中内部类主要分为成员内部类(非静态内部类、静态内部类)、匿名内部类、局部内部类。
    在这里插入图片描述
  2. 非静态内部类
    非静态内部类(外部类里使用非静态内部类和平时使用其他类没什么不同)
     1.非静态内部类对象必须寄存在一个外部类对象里。因此,如果有一个非静态内部类 对象那么一定存在对应的外部类对象。非静态内部类对象单独属于外部类的某个对象
     2.非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态内部类成员。
     3.非静态内部类不能有静态方法、静态属性和静态初始化块
     4.成员变量访问要点:
      1)内部类里方法的局部变量:变量名。
      2)内部类属性:this.变量名。
      3)外部类属性:外部类名.this.变量名。
     5. 内部类中访问成员变量示例
      在这里插入图片描述 6. 内部类的访问
      1) 外部类中定义内部类:new Inner()。
      2) 外部类以外的地方使用非静态内部类:Outer.Inner varname = new Outer().new Inner()。
    在这里插入图片描述

局部内部类

  1. 定义在方法内部的,作用域只限于本方法,称为局部内部类。不能用public ,protected或private访问权限修饰符进行声明.
  2. 局部内部类的的使用主要是用来解决比较复杂的问题,想创建一个类来辅助我们的解决 方案,到那时又不希望这个类是公共可用的,所以就产生了局部内部类。局部内部类和成员内部类一样被编译,只是它的作用域发生了改变,它只能在该方法中被使用,出了该方法就 会失效。
  3. 示例
    在这里插入图片描述

匿名内部类

  1. 假如值只创建这个类的一个对象,适合那种只需要使用一次的类。比如:键盘监听操作等等,在安卓开发、awt、swing 开发中常见,就不必命名了,这种类称为匿名内部类
  2. 语法
    在这里插入图片描述
  3. 示例
    在这里插入图片描述
  4. 注意:匿名内部类没有访问修饰符。匿名内部类没有构造方法。因为它连名字都没有那又何来构造方法呢。

静态内部类

  1. 定义方式
    在这里插入图片描述
  2. 要点:
     1) 静态内部类可以访问外部类的静态成员,不能访问外部类的普通成员
     2) 静态内部类看做外部类的一个静态成员
  3. 静态内部类代码
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41649001/article/details/106612039
今日推荐