Implementacja interfejsu i jakieś @Override

0

Siema

Jak chcę zaimplementować w mojej klasie jakiś interfejs np. Comparable, to dodaje te metody np. compareTo i one mają takie @Override

Jak to usunę to też działają obiekty dobrze

Trzeba dawać to @Override nad nazwą metody z interfejsu czy nie?

1

@Styl-Dunów: nie trzeba. Annotacja @Override jest po to:, żeby:

  1. Kompilator ci się wywalił kiedy popełnisz literówkę
    Np.
    class MyClass {

        public void doSomething() {
            System.out.println("doSomething");
        }
    }

    class MySubclass extends MyClass {

        /**
         * Jeśli wyrzucisz @Override to się skompiluje poprawnie, w innym przypadku nie przejdzie.
         */
        @Override
        public void doSoemthing() {
            System.out.println("doSomeOtherThing");
        }
    }
  1. Było widać, które metody są dziedziczone:
    class MyClass extends MySuperClass {

        /**
         * Widać, że MySuperClass posiada taką metodę
         */
        @Override
        public void methodA() {
            // ...
        }

        /**
         * A takiej nie
         */
        public void methodB() {
            // ...
        }
    }
2

Trzeba dawać to @Override nad nazwą metody z interfejsu czy nie?

Nie trzeba ale jak dodasz to kompilator sprawdzi czy nie kłamiesz i sygnatura faktycznie zgadza się z jakas metodą w nadklasie/interfejsie.

0

Jeśli chodzi o klasy nieabstrakcyjne to "efektywnie" nie trzeba.
Jak nie uda Ci się trafić z deklaracją w taką jak jest w interfejsie to interfejs nie będzie kompletnie zaimplementowany i Ci kompilator o tym powie.

https://ideone.com/rK3Ajp

1 użytkowników online, w tym zalogowanych: 0, gości: 1