2013-09-11 4 views
-1

Я читаю свой прежний код разработчиков. Существует несколько различных подклассов, таких как «числовые», «десятичные» под абстрактным классом «элемент». есть сегмент кода, как показано ниже.подклассы абстрактного класса в java

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 (суб (байт, поз, конец)»?

+0

Независимо от того, что хранится в переменной 'element' в этой итерации цикла. –

+0

Это зависит от содержимого 'children'. Это потенциально может быть любой подкласс. –

+0

Мог "Элемент Элемент = (Элемент) i.next();" решить, какой элемент он есть? – WangMango

ответ

2

Он вызывает метод разбора класса «правильной», если это класс переопределяет метод абстрактного класса или метод анализа в абстрактном классе (если он реализован) в противном случае.

Если ваши коллекции для детей {числовые, числовые, десятичные числа, числовые} и как числовые, так и десятичные значения переопределяют метод анализа в элементе, тогда метод parse будет вызываться сначала в числовом экземпляре, второй - в числовом, третьем - в десятичном, а затем в цифровом.

Смежные вопросы