[Java] Java 中的成员内部类

[复制链接]

52

主题

57

帖子

347

积分

版主

代码控

Rank: 7Rank: 7Rank: 7

积分
347

突出贡献优秀版主荣誉管理

QQ
351 0 joy 发表于 2016-12-30 13:36:07

  内部类中最常见的就是成员内部类,也称为普通内部类。

  我们来看如下代码:
  1. // 外部类Outer
  2. public class Outer{
  3.     private int a = 99; // 外部类的私有属性

  4.     // 内部类的Inner
  5.     public class Inner{
  6.         int b = 2; // 内部类的成员属性
  7.         public void test(){
  8.             System.out.println("访问外部类中的a:" + a);
  9.             System.out.println("访问内部类中的b:" + b);
  10.         }
  11.     }

  12.     // 测试成员内部类
  13.     public static void main(String[] args){
  14.         Outer o = new Outer(); // 创建外部类对象,对象名为o
  15.         Inner i = o.new Inner(); // 使用外部类对象创建内部类对象,对象名为i
  16.         i.test(); // 调用内部类对象的test方法
  17.     }
  18. }
复制代码


  运行结果为:
  1. 访问外部类中的a:99
  2. 访问内部类中的b:2
复制代码


  从上面的代码中我们可以看到,成员内部类的使用方法:
  1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
  2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性a
  3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
  4、 编译上面的程序后,会发现产生了两个 .class 文件
  

  其中,第二个是外部类的 .class 文件,第一个是内部类的 .class 文件,即成员内部类的 .class 文件总是这样:外部类名$内部类名.class

  另外,友情提示哦:
  1、 外部类是不能直接使用内部类的成员和方法滴
   1.png


  可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。

  2、 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。如:
   2.png


  运行结果:
  1. 访问外部类中的b:1
  2. 访问内部类中的b:2
复制代码


夜深人静之时,头发斑白的老程序员会蜷缩在床上,欣赏一段精彩的子程序,或者苦思冥想一个绝妙的宏结构;而那些年少轻狂的程序员,则可能正在通过终端与别人聊得不亦乐乎。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本专栏主要提供Java相关技术的学习交流。望大家积极踊跃发言,共建一个良好的学习环境!
  • 今日
    0
  • 主题
    366

推荐阅读

精选帖子

Archiver|手机版|小黑屋| 极客社区 ( 京ICP备14042200号-2 )

Powered by 张董丶 X3.2 © 2016-2026

返回顶部 返回列表