@ Должен ли я использовать @Override в этой ситуации? [Дубликат]

Используя встроенную функцию списка, вы можете сделать это

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
13
задан user063 4 May 2014 в 03:53
поделиться

2 ответа

Оба класса Rectangle и Ellipse должны переопределять оба абстрактных метода.

Чтобы обойти это, у вас есть 3 варианта:

  • Добавьте два метода
  • Сделайте каждый класс, который расширяет абстрактную форму Shape
  • Имеет один метод, который выполняет функцию классов, которые будут расширять форму, и переопределяет этот метод в Rectangle и Ellipse, например:
    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(/* ... */);

Опять же, просто пример.

4
ответ дан xTrollxDudex 20 August 2018 в 23:42
поделиться

Если вы пытаетесь воспользоваться полиморфным поведением, вам необходимо убедиться, что методы, видимые для внешних классов (которые требуют полиморфизма), имеют одну и ту же подпись. Это означает, что они должны иметь одинаковое имя, номер и порядок параметров, а также типы параметров.

В вашем случае вам может быть лучше иметь общий метод draw() и полагаться на подклассы (Rectangle, Ellipse), чтобы реализовать метод draw() как то, о чем вы думали как «drawEllipse» и «drawRectangle».

2
ответ дан Platinum Azure 20 August 2018 в 23:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: