Используя встроенную функцию списка, вы можете сделать это
a
out:[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
#Displaying the list
a.remove(a[0])
out:[[1, 1, 1, 1], [1, 1, 1, 1]]
# Removed the first element of the list in which you want altered number
a.append([5,1,1,1])
out:[[1, 1, 1, 1], [1, 1, 1, 1], [5, 1, 1, 1]]
# append the element in the list but the appended element as you can see is appended in last but you want that in starting
a.reverse()
out:[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
#So at last reverse the whole list to get the desired list
Оба класса Rectangle и Ellipse должны переопределять оба абстрактных метода.
Чтобы обойти это, у вас есть 3 варианта:
abstract class Shape {
// ...
void draw(Graphics g);
}
И
class Rectangle extends Shape {
void draw(Graphics g) {
// ...
}
}
Наконец
class Ellipse extends Shape {
void draw(Graphics g) {
// ...
}
}
И вы можете переключаться между ними, например:
Shape shape = new Ellipse();
shape.draw(/* ... */);
shape = new Rectangle();
shape.draw(/* ... */);
Опять же, просто пример.
Если вы пытаетесь воспользоваться полиморфным поведением, вам необходимо убедиться, что методы, видимые для внешних классов (которые требуют полиморфизма), имеют одну и ту же подпись. Это означает, что они должны иметь одинаковое имя, номер и порядок параметров, а также типы параметров.
В вашем случае вам может быть лучше иметь общий метод draw()
и полагаться на подклассы (Rectangle
, Ellipse
), чтобы реализовать метод draw()
как то, о чем вы думали как «drawEllipse» и «drawRectangle».