6-4内部类

内部类的特殊语法规则

可直接访问外部类的域

访问域

OuterClass.this.name (name是外部类的域名)

构造一个对象

1
2
TalkingClock jabberer = new Ta1kingClock(1000, true);
TalkingOock.TiiePrinter listener = jabberer.new TimePrinterO;

内部类是否有用、必要和安全

局部内部类

局部类不能用 public 或 private 访问说明符进行声明。它的作用域被限定在声明这个局部类的块中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void start
{
class TiiePrinter inpleients ActionListener
{
public void actionPerforaed(ActionEvent event)
{
Systei.out.println(
"At the tone, the tine is " + new DateO);
if (beep) Toolkit.getDefaul tToolki10•beep():
}
}
ActionListener listener = new TimePrinter();
Timer t = new Timer(interva1, listener);
t.start();
}

匿名内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
public void start(int interval, boolean beep)
{
ActionListener listener = new ActionListener
{
public void actionPerformed(ActionEvent event)
{
System.out.println("At the tone, the time is " + new Date);
if (beep) Toolkit.getDefaultToolkit().beep();
}
};
Timer t = new Timer(interval, listener);
t.start0;
}

创建一个实现ActionListener接口的对象 需要实现的方法actionPerformed定义在大括号内

静态内部类

为了把一个类隐藏在另外一个类的内部,不需要内部类引用外围类对象。内部类声明为 static, 以便取消产生的引用。

  • 静态内部类的对象除了没有对生成它的外围类对象的引用特权外, 与其他内部类完全一样。
  • 静态内部类可以有静态域和方法。
  • 声明在接口中的内部类自动成为 static 和 public 类