您的位置:首页 > 其它

day75内部类之状态,使用理由。

2014-05-26 23:02 113 查看
回调(callback)是一种常见的程序设计模式,在java.swing包中有一个timer类,可以使用它在到达时间间隔时发出通告。

在程序设计语言中,可以提供一个函数名,定时器周期性地调用它,在java标准类中的类采用的是面向对象方法,它将某个类的对象传递给定时器,然后,定时器调用 这个对象的方法,由于对象可以携带一些附加的信息,所以传递对象比传递一个函数要灵活得多。java有函数指针的对应物----Method对象。

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

import javaxswing.Timer;

public class TimerTest{

public static void main(String[] args){

ActionLIstener listener=new TimePrinter();

Timer t=new Timer(10000,listener);

t.start();

JOptionPane.showMessageDIalog(null,"Quit program?");

System.exit(0);

}

}

class TimePrinter implement ActionLIstenr

publc void action Performed(actionEvent event){

Date now=new Date();

System.out.println("At the tone ,the time is"+now);

toolkit.getDefaultToolkit().beep();

}

//timerPrinter是timerTest的内部类。

javax.swing.JOptionPane中:static void showMEssageDialog(Component parent.Object message)显示一个包含一条消息和OK按钮的对话框,这个对话框将位于parent组件的中央,如果parent为null。

javjax.swing.timer:timer(int interval,ActionLIstener listener):构造一个定时器,每隔interval毫秒通告listener一次

void start()启动定时器,一旦启动成功,定时器将调用监听器的actionPerformed

void stop();终止定时器,一旦终止成功,定时器将不再调用监听器,actioPErformed

使用内部类有三个原因:一,内部类方法可以访问该类定义所在的作用域的数据,包装私有的数据。

二、内部类可以对同一个包中的其他类隐藏起来。三,当想到定义一个回调函数且不想编写大量的代码时,使用匿名(anonymous)内部类便捷。

嵌套是一种类之间的关系,而不是对象之间的关系。嵌套类有两个好处,命名控制和访问控制。内部类实现的机制就是要做到即使数据域设为公有,仍然不能其他代码所使用。内部类的对象还有一个隐式引用,它引用了,实例化该内部对象的外围类对象。

只有内部类可以是私有类,而常规类只能具有包的可见性,或公有的可见性。一个方法可以引用 调用 这个方法的对象数据域,而内部类既可以访问自身的数据域,也可以访问创建它的外围的对象的数据域。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: