Java内部类
1、先看一下Java核心技术卷的介绍
内部类(inner class)是定义在另一个类中的类。为什么需要使用内部类呢?其主要原因有以下三点:
● 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据。
● 内部类可以对同一个包中的其他类隐藏起来。
● 当想要定义一个回调函数且不想编写大量代码时,使用匿名(anonymous)内部类比较便捷。
2、使用内部类访问对象状态
内部类的语法比较复杂。鉴于此情况,我们选择一个简单但不太实用的例子说明内部类的使用方式。下面将进一步分析TimerTest示例,并抽象出一个TalkingClock类。构造一个语音时钟时需要提供两个参数:发布通告的间隔和开关铃声的标志。
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;
public class TalkingClock{
private int interval;
private boolean beep;
public TalkingClock(int interval, boolean beep) {
this.interval = interval;
this.beep = beep;
}
public void start(){
}
public class TimePrinter implements AncestorListener{
@Override
public void ancestorAdded(AncestorEvent event) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'ancestorAdded'");
}
@Override
public void ancestorRemoved(AncestorEvent event) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'ancestorRemoved'");
}
@Override
public void ancestorMoved(AncestorEvent event) {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'ancestorMoved'");
}
}
}
需要注意,这里的TimePrinter类位于TalkingClock类内部。这并不意味着每个TalkingClock都有一个TimePrinter实例域。如前所示,TimePrinter对象是由TalkingClock类的方法构造。下面是TimePrinter类的详细内容。需要注意一点,actionPerformed方法在发出铃声之前检查了beep标志。
本文来自博客园,作者:致非,转载请注明原文链接:https://www.cnblogs.com/mycity/articles/17317827.html

浙公网安备 33010602011771号