笔记:Java 接口与内部类

1.接口

  在Java程序设计中,接口(interface)不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。

  接口中的所有方法自动地属于public,在接口中申明方法时,不必提供关键字public。

  接口中绝不能含有实例域,也不能在接口中实现方法。提供实例域和方法的任务应该由实现接口的那个类来完成。

  为了让类实现一个接口,通常需要两个步骤:

(1)将类申明为实现给定的接口。

(2)对接口中的所有方法进行定义。

  要将类声明为实现某个接口,需要使用关键字implements

2.接口与回调

  例如:假如程序中有一个时钟,就可以请求每秒获取一个通知,以便更新时钟的画面。

import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import javax.swing.JOptionPane;
import javax.swing.Timer;

public class CallBackTest {

	public static void main(String[] args) {
		ActionListener listener = new TimerPrinter();
		Timer t = new Timer(1000, listener);
		t.start();
		JOptionPane.showMessageDialog(null, "Quit program");
		System.exit(0);
	}
}

class TimerPrinter implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		Date now = new Date();
		System.out.println("At the tone,the time is " + now);
		Toolkit.getDefaultToolkit().beep();
	}

}

接口:

public interface ActionListener{
  void actionPerformed(ActionEven event);
}

当达到指定时间间隔时,定时器就调用actionPerformed方法。然后定义一个实现ActionListener接口的类,将执行的语句放在actionPerformed方法中。

2.内部类

  内部类(inner class)是定义在另一个类中的类。使用内部类的原因有三点:

(1)内部类方法可以访问该类定义所在的作用域中的数据,包括私有数据。

(2)内部类可以对同一个包中的其他类隐藏起来。

(3)当想要定义一个回调函数且不想编写大量代码时,使用匿名内部类比较便捷。

  局部内部类

  匿名内部类

public void start(int interval,final boolean deep){
  ActionListener listener = new ActionListener(){
    public void actionPerformed(ActionEvent event){
      Date now = new Date();
      more code
    }
  }
}

它的含义:创建一个实现ActionListener接口的类的新对象,需要实现的方法actionPerformed定义在括号{ }中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值