Ошибка компиляции «Метод setRadius (int) не определен для типа Shape» - PullRequest
0 голосов
/ 09 ноября 2019
Shape[] sa = new Shape[10];
for(int i = 0; i < sa.length; i=i+2) {
    sa[i] = new Circle();
    sa[i].setRadius(2);
}

Итак, я хотел установить некоторую часть класса "shape" для класса Circle, но он продолжал выдавать ошибку:

Метод setRadius(int) не определен для типаShape.

См. Изображение

1 Ответ

2 голосов
/ 09 ноября 2019

Это сводится к фундаментальной концепции Наследование в объектно-ориентированном программировании.

Вы объявляете массив Shape, и это означает, что вы можете использовать только методы, определенные вShape класс при доступе к элементу, даже если этот элемент является унаследованным типом, как, в вашем случае, Circle

Так что проблема в том, что класс Shape не определяет метод для setRadius(int radius) и, следовательно, метод не может использоваться, когда переменная Shape

Возможно, вы хотели что-то подобное?

Circle[] circleArray = new Circle[10];

for (int i = 0; i < circleArray.length; i += 2)
{
    circleArray[i] = new Circle();
    circleArray[i].setRadius(2);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...