134,679
社区成员
发帖
与我相关
我的任务
分享1.题目描述
在类中,除以可以定义参数,方法和块,还可以定义类。这种类叫做内部类。
实现:做一个简单的闹钟,控制台不断输出当前时间,并且每隔一秒钟发出提示音。单击“退出”按钮,来退出程序
2.解题思路
写一个闹钟类AlarmClock
定义两个属性参数:delay:表示延迟时间;flag:是否需要发出声音。
在一个方法内定义一个内部类,这个类就是局部内部类。这种类不能使用public 和private 修饰。
局部内部类的优点:可以访问方法参数
3.代码详解
闹钟类:
public class AlarmClock {
private int delay;
private boolean flag;
public AlarmClock(int delay, boolean flag) {
this.delay = delay;
this.flag = flag;
}
public void start() {
class Printer implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
SimpleDateFormat format = new SimpleDateFormat("k:m:s");
String result = format.format(new Date());
System.out.println("当前的时间是:" + result);
if (flag) {
Toolkit.getDefaultToolkit().beep();
}
}
}
new Timer(delay, new Printer()).start();
}
}
测试类:
public static void main(String[] args) {
AlarmClock clock = new AlarmClock(1000, true);
clock.start();
JOptionPane.showMessageDialog(null, "是否退出?");
System.exit(0);
}
4.运行结果

注意:内部类使用了方法参数变量,这个参数变量必须是final的。