2010-08-30 29 views
7

¿Cuál es la diferencia entre la sobrecarga del operador y la anulación del operador?Sobrecarga y sobrecarga del operador en Java

¿Son las mismas en el programa de herencia y consola?

+6

* son lo mismo en herencia y en el programa de consola *: esta frase no está muy clara. –

Respuesta

9

No puede anular (ni sobrecargar) los operadores en Java.

En algunos otros idiomas, puede hacerlo, y la diferencia entre la sobrecarga del operador y la anulación es igual que la sobrecarga de funciones y la sobrescritura. P.ej. en Scala los operadores son solo funciones.

+1

Para cuantificar la declaración de Scala, Scala permite nombres de métodos simbólicos. Es por eso que + es un nombre de método válido, incluso ++ - * podría definirse. – gpampara

1

No hay sobrecarga/sobrecarga del operador en Java.

+4

No hay sobrecarga lingüística extra definida por el usuario, pero '+' obviamente es un operador sobrecargado por definición (es decir, concatenación de cadena o adición numérica, tal vez a la confusión de muchos principiantes). Y eso es solo el '' 'binario; también hay una versión única. – polygenelubricants

21

La sobrecarga y la sobrecarga del operador no son compatibles con Java.

Comprobar siguiente cita de la descripción: http://java.sun.com/docs/white/langenv/Simple.doc2.html

2.2.7 No más la sobrecarga de operadores

No hay medios previstos por el cual programadores pueden sobrecargar los operadores aritméticos estándar. Una vez más, los efectos de la sobrecarga del operador pueden ser con la misma facilidad que se logra al declarar una clase , variables de instancia apropiadas, y los métodos apropiados para manipular esas variables. La eliminación de la sobrecarga del operador permite una gran simplificación del código .

6

Puede sobrecargar el operador en C++ pero no en Java. Me pregunto si te refieres a la sobrecarga de métodos y a la anulación de métodos. La sobrecarga de métodos tiene dos definiciones para la misma firma de método. Por ejemplo,

int sum(int var1, int var2) 
{ 
    return (var1+var2); 
} 

int sum(int var1, int var2, int var3) 
{ 
    return (var1+var2+var3); 
} 

En la programación orientada a objetos, se reemplaza (redefinir) una función que se hereda de la clase ascendente (base). En una jerarquía de clases, cuando una función (método) en una subclase tiene el mismo nombre y firma de tipo que un método en su superclase, se dice que el método en la subclase anula el método en la superclase.

+1

También en Java también puede declarar argumentos variables como 'int sum (int ... vars)'. – m0skit0

3

Hay un javac-plugin (un procesador de anotación como Lombok) llamado "Java-OO", que agrega la sobrecarga del operador a Java.

Le permite agregar la sobrecarga del operador a sus propias clases muy fácilmente. Además de esto, muchas de las clases incorporadas de la API de Java también admiten la sobrecarga del operador cuando se utiliza este complemento. (Por ejemplo: en lugar de list.get (6) o map.get ("hola") se puede hacer la lista [6] y el mapa [ "Hola"])

Todo lo que necesita hacer es incluye el .jar en el classpath al compilar con javac.

Hay complementos para todos los principales IDEs: Eclipse, Netbeans e IntelliJ IDEA.