-1

我正在阅读我以前的开发人员代码。在抽象类“元素”下有几个不同的子类,如“数字”、“十进制”。有一段代码如下。

for (Iterator i = children.iterator(); i.hasNext();) {
            Element element = (Element) i.next();
            for (int j = 0; j < element.getOccurs(); j++) {
                int end = pos + element.getLength();
                dataChildren.add(element.parse(sub(bytes, pos, end)));
                pos = end;
            }
        }

我的问题是当执行这个“element.parse(sub(bytes, pos, end)”时它会调用哪些子类?

4

1 回答 1

2

如果这个类重写了抽象类的方法或抽象类中的 parse 方法(如果已实现),则它调用“正确”类的 parse 方法。

如果您的子集合是 {numeric, numeric, decimal, numeric},并且 numeric 和 decimal 都覆盖了 element 中的 parse 方法,则 parse 方法将首先在 numeric 实例中调用,第二个在 numeric 中,第三个在 decimal 中,然后在 numeric .

于 2013-09-11T20:38:41.127 回答