适配器设计中,抽象类中为何没有抽象方法?子类中也没有覆写抽象类中的抽象方法?
interface Window{ // 定义Window接口,表示窗口操作
public void open() ; // 打开
public void close() ; // 关闭
public void activated() ; // 窗口活动
public void iconified() ; // 窗口最小化
public void deiconified();// 窗口恢复大小
}
abstract class WindowAdapter implements Window{
public void open(){} ; // 打开
public void close(){} ; // 关闭
public void activated(){} ; // 窗口活动
public void iconified(){} ; // 窗口最小化
public void deiconified(){};// 窗口恢复大小
};
class WindowImpl extends WindowAdapter{
public void open(){
System.out.println("窗口打开。") ;
}
public void close(){
System.out.println("窗口关闭。") ;
}
};

解决方案 »

  1.   

    抽象类WindowAdapter实现了Window接口,那么它必须得实现Window中的所有方法抽象类中对接口的方法都给了空实现实现类WindowImpl在继承抽象类Adapter时根据需要实现具体方法,这里是用Adapter作为适配接口,而Window是作为共同类型的
      

  2.   

    1.抽象类中为何没有抽象方法?
    抽象类可以没有抽象方法子类中也没有覆写抽象类中的抽象方法?
    子类只有实现父类抽象方法
    覆写是针对已实现的方法来说的WindowAdapter的目的是为了减少程序员的工作。
    如果每次都去实现window接口那么你要实现window的所有方法,但这些方法可能什么也不做,所以就弄了个WindowAdapter 类实现了Window的所有方法,再使用时只需要覆盖WindowAdapter 的方法就可以了
    这个在 thinking in java上讲的很明白