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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小p 中级黑马   /  2015-7-17 11:01  /  138 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
内部类访问规则:
1,内部类可以直接访问外部类中的成员,包括私有。
   之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this
2,外部类想访问内部类,必须建立内部类对象。

访问格式:
当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中
直接建立内部类对象。
格式
Outer.Inner in = new Outer().new Inner();
2.当内部类在成员位置上,就可以被成员修饰符修饰。(private static)
当内部类定义了静态成员,该内部类必须是静态内部类。

用处;当描述事物时,事物的内部还有事物,该事物用内部类来描述。
因为内部事物在使用外部事物的内容。

*/
class Outer
{
private int x=3;

static class Inner//内部类
{
  int x=4
  void function()
  {
   int x=6;
   System.out.println("inner");
  }
}
class Inner2
{
  void show()
  {
   System.out.println("inner2 show");
  }
public static void method()
{
  Inner.function();
}
}

void method()
{
  Inner in=new Inner();
  in.function();

}
}

class  InnerClassDemo
{
public static void main(String[] args)
{
  //Outer out =new Outer();
  //out.method();
  //直接访问内部类中的成员。
  //Outer.Inner in = new Outer().new Inner();
  //in.function();
}
}
当内部类定义在局部时:不可以被成员修饰符修饰;可以直接访问外部类中的成员。不可以访问它所在的局部的变量,只能访问被final修饰的变量。

匿名内部类:

1,匿名内部类就是内部类的简写格式。

2,前提:内部类必须继承一个类或实现接口

3,格式:new父类或者接口(){子类内容}

4,内部类就是一个匿名子类对象

abstract class AbsDemo
{
abstract void show();
}

class Outer
{
int x=3;
/*class Inner extends AbsDemo
{
  void show()
  {
   System.out.println("show"+x);
  }
}*/
public void function()
{
  //new Inner().show();
  //内部类简写为匿名内部类
  new AbsDemo()
  {
   void show()
   {
    System.out.println("x="+x);
   }
  }.show();
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马