2011-01-19 21 views

Respuesta

74

@Override es un Java annotation. Le dice al compilador que el siguiente método overrides es un método de superclass. Por ejemplo, supongamos que implementa una clase Person.

public class Person { 
    public final String firstName; 
    public final String lastName; 

    //some methods 

    @Override public boolean equals(Object other) { 
     ... 
    } 
} 

La clase de persona tiene el método equals(). El método equals ya está definido en la superclase de Person Object. Por lo tanto, la implementación anterior de equals() es una redefinición de iguales() para Personas.Es decir, la persona anula equals().

Es legal anular los métodos sin anotarlo explícitamente. Entonces, ¿para qué sirve la anotación @Override? ¿Qué pasa si accidentalmente se intentó anular equals() de esa manera:

public boolean equals(Person other) { 
    ... 
} 

El caso anterior tiene un error. Querías anular equals() pero no lo hiciste. ¿Por qué? porque el real equals() obtiene un objeto como parámetro y tu igual() obtiene una persona como parámetro. El compilador no le informará sobre el error porque el compilador no sabe que usted desea anularlo. Por lo que el compilador puede decir, realmente quisiste decir overload equals(). Pero si se trató de sobrescribir equals usando la anotación @ Override:

@Override public boolean equals(Person other) { 
    ... 
} 

Ahora el compilador sabe que usted tiene un error. Querías anular pero no lo hiciste. Por lo tanto, la razón para usar la anotación @Override es declarar explícitamente la anulación de método.

+4

¡Qué buena respuesta, muy fácil de leer, suave como una serpiente :) – Vass

+0

Así que será un nombre del método totalmente nuevo igual? Depende de mí cómo quiero definir ir? – Chaine

2

Es annotation en Java. Marca que el método está destinado a anular un método en una superclase.

4

@Override es un java annotation.

Indica que una declaración de método está destinada a anular una declaración de método en una superclase. Si un método se anota con este tipo de anotación pero no anula un método de superclase, los compiladores deben generar un mensaje de error.

Vea también

Ejemplo:

class Parent{ 
    public void foo(){ 

    } 
} 

class Child extends Parent{ 
    //compile perfect ! 
    @Override 
    public void foo(){ 

    } 
    //will show compile time error message here as it is not being overridden 
    @Override 
    public void foo(int i){ 

    } 

} 
+0

Tenga en cuenta que es '@ Override' con una O mayúscula, no' @ override'. – Jesper

+0

@Jes Gracias. era un error tipográfico –

1

Ver este stackoverflow anterior Pregunta:

Android @Override usage

+1

Debería publicarlo como un comentario, siempre que no brinde más información. – Jonas

+0

Este enlace fue realmente útil, y casi duplicado de esta pregunta. No sé sobre puntuación, pero creo que el vínculo es positivo. – olleolleolle

0

Es un especial, compilador reservado, anotación Java que denota que está anulando un método de superclase.

6

Es una anotación Java que le dice al compilador que el método está destinado a anular un método de la superclase. No es estrictamente necesario, pero ayuda a detectar errores en tiempo de compilación.

19

Es una anotación Java (no específica de Android). Lo usa para indicar que este método anula un método.

La razón de usar es para detectar errores al crear un método tiene la intención de reemplazar un método, sino a través de algún error, lo hace no , por ejemplo, errata en el nombre del método, un error en la firma del método, etc .. Por ejemplo, a veces los desarrolladores a esto:

class Foo { 
    public boolean equals(Foo other) { 
     ... 

El autor pretende esto para anular la superclase equals método, pero no lo hace (el parámetro tipo debe ser Object). El programa compilará bien, pero no usará Foo.equals como el autor pretendía.

class Foo { 
    @Override 
    public boolean equals(Foo other) { 
     ... 

La compilación ahora dará un error porque el método no anula a otro método. Esto señala el problema temprano y, con suerte, ahorra tiempo de depuración para rastrear el problema.

0

Es un java Anotation Su código no requiere que @override funcione correctamente. @override Es algo que el compilador usa para ayudarte. Le está diciendo al compilador que está anulando un método/función en la clase de la que está heredando. ¿Por qué es útil hacer esto? Bien, una vez que el compilador sabe que tiene la intención de anularlo, puede ayudarle a identificar los errores en su código.

public class Person { 

public final Cadena firstName; public final String lastName;

// algunos métodos

@Override public String getName() {... }}

public class Employee extends Person { 

    public String get name() { 
    ...... 
} 

Aquí el compilador mostrará los errores y estará feliz porque lo hace sabe que usted está tratando de reemplazar el método ..

Pero

public class Employee extends Person { 

    @Override 
    public String getname() { 
     ..... 
} 

Aquí, detectará su error y produce un error en tiempo de compilación ...