A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 307117758 中级黑马   /  2015-10-25 21:41  /  247 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(3)内部类分类:
  1:成员位置
   private 安全        隐藏内部类  提供公共的访问方法
   static  方便调用
    外部访问非静态成员内部类  外部类名.内部类名 变量 = 外部类对象.内部类对象;
    外部访问静态成员内部类    外部类名.内部类名 变量 = 外部类.内部类();

   代码:
    class Body
    {
     private int weight = 100;
     private class Heart
     {
      public void operator()
      {
       System.out.println("心脏搭桥手术");
      }
     }

     public void method()
     {
      if(如果你是医生)
      {
       Heart h = new Heart();
       h.operator();
      }
     }
    }

    class Test
    {
     public static void main(String[] args)
     {
      //Body.Heart bh = new Body().new Heart();
      //bh.operator();
      Body b = new Body();
      b.method();
     }
    }
  2:局部位置
   定义在方法中。

   局部内部类访问局部变量必须加final修饰。
   延迟生命周期。

   代码:
   class Outer
   {

    public void method()
    {
     final int num = 10;
     //定义类
     class Inner
     {

      public void show()
      {

       System.out.println(num);
      }
     }

     //创建对象
     Inner i = new Inner();
     i.show();
    }

    public void function()
    {
     //错误
     //Inner i = new Inner();
     //i.show();
    }
   }

   class InnerTest3
   {
    public static void main(String[] args)
    {
     Outer o = new Outer();
     o.method();
    }
   }

(4)内部类字节码文件命名规则
   成员内部类:外部类$内部类
    有多个成员内部类的 会多个  外部类$1
   局部内部类:外部类$1内部类

(5)匿名内部类(掌握)
  1:是定义在局部位置的没有名字的内部类。
  2:前提
   存在一个类,抽象类,或者接口。
  3:格式
   new 类或者接口名()
   {
    重写方法;
   }

   本质理解:其实这是一个继承类或者实现接口的匿名的子类对象。

1 个回复

倒序浏览
孤单背影 来自手机 中级黑马 2015-10-26 00:48:11
沙发
当我大哥好不好,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马