我实际上正在阅读一本关于java中的设计模式的书,我是一个新手:)
http://www.amazon.com/Design-Patterns-Java-TM-Software/dp/0321333020/在关于复合模式的章节我遇到了一个令我困惑的代码,一个抽象类的抽象,我也没有很好理解当子分区调用抽象超类的构造函数时会发生什么,请你帮我!
我正在谈论的演员是在isTree(设置访问过)
MachineComponent c = (MachineComponent) i.next();
if (visited.contains(c) || !c.isTree(visited))
Run Code Online (Sandbox Code Playgroud)
isTree当isTree超类方法是抽象的时,我怎样才能在转换为抽象超类之后调用子类的方法?
以下是两个类的片段:
package com.oozinoz.machine;
/*
* Copyright (c) 2001, 2005. Steven J. Metsker.
*/
import java.util.*;
import com.oozinoz.iterator.ComponentIterator;
/**
* Objects of this class represent either individual machines or composites of
* machines.
*/
public abstract class MachineComponent {
/*
* Subclasses implement this to support the isTree() algorithm.
*/
protected abstract boolean isTree(Set s);
// rest of class omitted
}
Run Code Online (Sandbox Code Playgroud)
2:
package com.oozinoz.machine; …Run Code Online (Sandbox Code Playgroud) 对不起,如果这个问题很愚蠢,但我没有在网上找到这样做的东西.
我不想禁用该项目,但清除整个菜单项列表.
有什么帮助吗?