抽象方法使用中的一个简单问题 100分
class TimePrinter implements ActionListener //定义时间响应事件类继承了ActionListener接口
{
public void actionPerformed(ActionEvent event)
{
Date now = new Date();
System.out.println("At the tone, the time is " + now);
Toolkit.getDefaultToolkit().beep(); //?
}
}
上面经编译运行成功的。可以用Timer类的对象调用。
如:
TimerPrinter go = new TimerPrinter();
Timer t = new Timer(100000, go);
t.start();
我查过beep()是一个抽象方法,为什么可以直接引用?
问题点数:100、回复次数:10Top
1 楼alaal(for you)回复于 2004-09-02 12:40:19 得分 20
Toolkit.getDefaultToolkit()实现了beep()方法所在接口
并在其中实现了beep()方法,
我没用过这些借口与方法,但原理是这样的Top
2 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 12:40:34 得分 20
getDefaultToolkit()返回的是一个实例, 是Toolkit的子类Top
3 楼007JavaKing(乖乖咙的咚)回复于 2004-09-02 12:49:35 得分 20
Toolkit的子类实现了BEEP()Top
4 楼ntzls()回复于 2004-09-02 12:51:11 得分 20
Toolkit.getDefaultToolkit()访回Toolkit的子类化非抽象类的实例上传至Toolkit,而调用的是已被子类覆写的非抽象方法beep()。Top
5 楼flyRoy(芸枫)回复于 2004-09-02 12:52:31 得分 20
恩,getDefaultToolkit()返回的是一个的实例,既然是实例那就说明在这个实例中的beep()方法已经被实现了.Top
6 楼ntzls()回复于 2004-09-02 12:54:53 得分 0
没上传Top
7 楼sylmoon(专注Oracle)回复于 2004-09-02 13:04:33 得分 0
同意楼上Top
8 楼nwpulipeng(☆→【★海阔天空★】)回复于 2004-09-02 14:15:49 得分 0
关注Top
9 楼Sanco(十扇门)回复于 2004-09-02 14:55:27 得分 0
public abstract void beep();
public static Toolkit getDefaultToolkit();
这是在Toolkit类中的声明,它返回的是Toolkit类对象,或者说父类的方法可以返回子类的对象?那为什么不直接用子类的对象调用beep()?Top
10 楼kingfish(工作很忙,很少来csdn...)回复于 2004-09-02 15:10:25 得分 0
1.谁说不行
2.增加灵活性。
refer to objects by their interfacesTop




