一、Observer(观察者模式)练习:
package xyh.observer;
import java.util.Observable;
import java.util.Observer;
public class Watcher1 implements Observer
{
public void update(Observable o, Object arg)
{
Integer in = (Integer)arg;
if(in >= 0 && in <= 9 )
{
System.out.println(in);
}
}
}
package xyh.observer;
import java.util.Observable;
import java.util.Observer;
public class Watcher2 implements Observer
{
public void update(Observable o, Object arg)
{
Integer in = (Integer)arg;
if(in >= 0 && in <= 5 )
{
System.out.println(in);
}
}
}
package xyh.observer;
import java.util.Observable;
public class WatchedTest extends Observable
{
private int number;
public WatchedTest()
{
number = 10;
}
public void decreasing()
{
for(int i = 10; i >=0; i--)
{
this.setChanged();
this.notifyObservers(number);
number--;
}
}
public static void main(String[] args)
{
WatchedTest watched = new WatchedTest();
watched.addObserver(new Watcher1());
watched.addObserver(new Watcher2());
watched.decreasing();
}
}
二、内部类(Inner Class):内部类分为4种
1)静态内部类(static inner class):只能访问外部类的静态成员变量与静态方法,生成静态内部类对象的方式为:
OuterClass.InnerClass inner = new Outerclass.InnerClass();
2)成员内部类(member inner class):可以访问外部类的静态与非静态的方法与成员变量,生成成员内部类的方式为:
OuterClass.InnerClass inner = new OuterClass().new InnerClass();
在局部类中访问外部类的成员变量,语法为:
Outer.this.a;
在外部类中创建一个本类的内部类:
Inner inner = this.new Inner();
3)局部内部类(Local Inner Class):定义在方法当中,只能访问方法中声明的final类型的变量
4)匿名内部类(Anonymous Inner Class):匿名内部类会隐式地继承一个父类或实现一个接口。
匿名内部类也是定义在方法中
JButton b = new JButton();
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("hello world");
}
});