Кинню Каору
Мастер
(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`) при приведении типа.
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"