Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как воспользоваться методом дочернего класса, находящегося на итом месте в списке?

Ааа женщина джоджофаг Ученик (196), на голосовании 4 месяца назад
Есть родительский класс TComponent. У него есть 5 дочерних классов. Например один из них - processor. Есть список этих компонентов (Set). И перебирая в цикле for элементы списка мне нужно использовать метод print() из дочернего класса.

public void vivod(ArrayList<TComponent> allComps) {
for(int i = 0; i < allComps.size(); i++) {
if (allCompsюget(i) instanceof processor) {
allComps.get(i).print();
}
}
}


Выдаёт ошибку "The method print() is undefined for the type TComponent"
Голосование за лучший ответ
Кинню Каору Мастер (1342) 5 месяцев назад
Проблема здесь в том, что компилятор не видит метод `print()` в классе `TComponent`, поскольку он вызывается через переменную типа `TComponent`. Даже если объект внутри переменной является экземпляром дочернего класса, компилятор обращается к методам только того класса, который указан в переменной.

Чтобы это исправить, вам нужно явно привести объект к типу дочернего класса перед вызовом метода `print()`. Вот как это можно сделать:

```java
public void vivod(ArrayList<TComponent> allComps) {
for(int i = 0; i < allComps.size(); i++) {
if (allComps.get(i) instanceof Processor) {
Processor processor = (Processor) allComps.get(i); // Приводим к типу Processor
processor.print(); // Вызываем метод print() из класса Processor
}
}
}
```

Пожалуйста, убедитесь, что вы правильно указали имя дочернего класса (например, `Processor`) при приведении типа.
Ааа женщина джоджофагУченик (196) 5 месяцев назад
Спасибо сейчас попробую!! А ещё у вас клёвая ава с:
Кинню Каору Мастер (1342) Вера Гунькина, Да спасибо если не правильно то извините я не спец
Похожие вопросы