package innerclass;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
public class InnerClassTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/**
* 1.
* 内部类可以访问该类所定义作用域的数据
* 对同一个包里的其他类隐藏起来
* 编写大量代码时,使用匿名内部类更便捷
*
*
*
* 2.编译器会给内部类一个默认构造方法
*
*
* 3.内部类的特殊语法规则
* ActionListener listener = this.new TimePrint();
* if (TalkingClass.this.beep) {
*
*
* 内部类中不能有静态方法
*
*
*
* 内部类是否有用,安全,必要? 。。。。。略
*/
}
class TalkingClass{
private int intervel;
private boolean beep;
public void start(){
// ActionListener listener = this.new TimePrint();
ActionListener listener = new TimePrint();
new Timer(intervel, listener).start();
}
public class TimePrint implements ActionListener{//内部类
/*
* 编译器会生成一个默认的构造器
* public TimePrint(TalkingClass talkingClass){
outer = talkingClass;
}*/
/* @Override
public void actionPerformed(ActionEvent e) {
if (beep) {//outer.beep
Toolkit.getDefaultToolkit().beep();
}
}*/
//内部类的特殊语法规则
@Override
public void actionPerformed(ActionEvent e) {
if (TalkingClass.this.beep) {
Toolkit.getDefaultToolkit().beep();
}
}
}
}