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

回调(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)内部类便捷。

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

只有内部类可以是私有类,而常规类只能具有包的可见性,或公有的可见性。一个方法可以引用 调用 这个方法的对象数据域,而内部类既可以访问自身的数据域,也可以访问创建它的外围的对象的数据域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值