abstract class WindowAdapter implements Window{
public void open(){} ; // 打开
public void close(){} ; // 关闭
public void activated(){} ; // 窗口活动
public void iconified(){} ; // 窗口最小化
public void deiconified(){};// 窗口恢复大小
}又麻烦大家了。(上面是我在一本书上看到的)
问:上面的类WindowAdapter 是“抽象”的吗?
疑问:
1. 形如:fun();的称是抽象方法,
2.但是:fun(){};好像不是抽象方法吧。
3.抽象方法好像必须用abstract标识吧。

解决方案 »

  1.   

    1、有abstract修饰的类是抽象类
    2、类中只要出现一个abstract修饰的方法,而且没有方法体实现,那么该类必须声明成抽象类(接口看下面)
    3、接口需要interface修饰,并且所有的方法必须是abstract的最后想说的是楼主是个伸手党。楼下不要回了。
      

  2.   

    WindowAdapter 不是抽象类。其实,在设计模式里面,所有的适配器类都不是抽象的,它只是存在空方法或者默认执行的步骤而已。从语法角度上来讲,没有 abstract 关键字的方法,就不是抽象方法;没有 abstract 关键字的类,就不是抽象类(接口除外)。
      

  3.   

    1.抽象方法只有行为的概念没有具体的实现
    2 由abstract关键字修饰.
    所以上面的方法应该写成
    abstract class WindowAdapter implements Window{
    public abstract void open(); // 打开
    public abstract void close(); // 关闭
    public abstract void activated(); // 窗口活动
    public abstract void iconified() ;// 窗口最小化
    public abstract void deiconified();// 窗口恢复大小
    }
      

  4.   

    1 不是抽象类必须有抽象方法,如果不需要一个类的实例,可以把类定义成抽象类.(只使用静态方法.).
    2 楼主举的例子可以理解成 这个抽象类在Window接口和使用这个接口的类之间架了座桥梁。 其目的是为了方便编写我们实现接口的代码。
        比如,我们写一个类,要实现Window接口,必须把这个接口里的方法全部覆写,(否则我们只能命名为抽象类,不能实例化),但我们只需要其中一个方法,(比如关闭窗口)。那我们也得把其余4个方法都覆写,及使什么都不干。
        有了那个抽象类,情况就简单了。我们继承这个类,那些接口里的方法都由抽象类覆写了。(都不再是抽象的了)。那我们在自己的类里只要覆写用到的那个方法就行了,不用再去覆写其余4个了。(抽象类提我们覆写了)。
    4楼这样写好像没意义了。
      

  5.   

    [Quote=引用 1 
    最后想说的是楼主是个伸手党。楼下不要回了。
    [/Quote]
    大哥,别这样认为嘛,我知道这个问题不是很深入,我问过别人的意见也不统一,我才拿来问的,而且我也查过资料,没有直接拿来问的哈···