http://www.verejava.com/?id=16992879139164 /**
知識點: 匿名内部類
題目: 機車上裝有警報器,當有人碰到機車時, 警報器發出報警響聲
思路:
1. 抽象出類:
1.1 機車(Moto),報警器(Alarm), 人(Person)
2. 找出類的關系:
2.1 機車上裝有報警器 Alarm -> Moto(1對1)
2.2 警報器有不同品牌的分類 Alarm
3. 找出類屬性:
3.1 Moto(品牌,報警器的引用)
3.2 Alarm(品牌)
3.3 Person(姓名)
4. 找出類方法:
4.1 機車上裝有報警器 Moto{load(Alarm alarm)}
4.2 機車被人碰到 Moto{touched(Person p)}
4.3 警報器發出響聲 Alarm{beep()}
*/
public class TestMoto3 {
public static void main(String[] args) {
//準備生産一台南方機車
Moto moto = new Moto("南方");
moto.load(new Alarm() {
public void beep(Person p) {
System.out.println(p.getName() + " 碰到了警報器 ");
}
});
//這個時候李明過來了
Person p = new Person("李明");
//李明不小心碰到了機車, 機車發出了報警聲
moto.touched(p);
}
}
abstract class Alarm {
//報警器能發出報警聲
public abstract void beep(Person p);
}
class Moto {
private String brand;//品牌
private Alarm alarm;//報警器引用
public Moto(String brand) {
this.brand = brand;
}
//裝載警報器
public void load(Alarm alarm) {
this.alarm = alarm;
}
//機車被人碰到
public void touched(Person p) {
alarm.beep(p);
}
}
class Person {
private String name;//姓名
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}