Вы находитесь на странице: 1из 2

POO Overriding(Sobreescritura) vs Overloading(sobrecarga)

Del libro: SCJP Sun Certified Programmer for Java 6 Exam 310-065 Mtodos Sobrecargados (Overloaded) Argumento(s) Tipo devuelto (Return type) Debe cambiar No cambiar. Mtodos Sobrescritos (Overridden) No debe cambiar No cambiar excepto para covariant returns. Se puede reducir o eliminar Excepciones No cambiar. No se debe lanzar una nueva excepcin o ampliar la existente. Se puede hacer ms restrictiva

Acceso

No cambiar El tipo de referencia determina que versin de sobrecarga (basada en los tipos de argumentos declarados) ha sido seleccionada. Ocurre en tiempo de compilacin. El mtodo invocado todava es una invocacin virtual del mtodo, en tiempo de ejecucin, pero el compilador sabe la firma del mtodo que es invocado. As, en tiempo de ejecucin, el argumento emparejado ya se habr llevado a cabo, no solo en la clase en la que el mtodo reside

Invocacin

El tipo de objeto (el tipo de la instancia actual en la Heap) determina que mtodo es seleccionado. Sucede en tiempo de ejecucin.

Reglas a seguir para sobrescribir un mtodo: - La lista de argumentos debe coincidir con el mtodo sobrescrito. - El tipo devuelto debe ser el mismo, o un subtipo de. - El acceso no puede ser ms restrictivo que el mtodo sobrescrito. - El acceso puede ser menos restrictivo que el mtodo sobrescrito. - Las instancias de los mtodos puede ser sobrescritos solamente si son

herederos de la subclase. - El mtodo sobrescrito puede lanzar cualquier excepcin uncheked en tiempo de ejecucin. - El mtodo sobrescrito no debe lanzar excepciones checked que son nuevas o mas amplias que las declaradas. - El mtodo sobrescrito puede lanzar excepciones limitadas o menos excepciones. - No sobrescribir mtodos final. - No sobrescribir mtodos static. - Si un mtodo no puede ser heredado, no se puede sobrescribir.

Los mtodos sobrecargados: - Deben cambiar la lista de argumentos. - Pueden cambiar el tipo devuelto. - Pueden cambiar los modificadores de acceso. - Pueden declarar nuevas excepciones o ampliar las existentes. - Un mtodo puede ser sobreescrito en la misma clase o en una subclase
Ejemplos de mtodos de Java lang que se pueden sobrecargar:

boolean startsWith(String str): devuelve true si la String sobre la que se aplica comienza por la del argumento; false si esto no ocurre. boolean startsWith(String str, int indice): devuelve true si la String sobre la que se aplica comienza por la del argumento a partir de un determinado ndice asociado al segundo argumento; false si esto no ocurre. int compareTo(Object o): Compares this String to another Object.

int compareTo(String lexicographically

anotherString):

Compares

two

strings

int indexOf(int ch): Returns the index within this string of the first occurrence of the specified character. int indexOf(int ch, int fromIndex): Returns the index within this string of the first occurrence of the specified character, starting the search at the specified index. int indexOf(String str): Returns the index within this string of the first occurrence of the specified substring. int indexOf(String str, int fromIndex): Returns the index within this string of the first occurrence of the specified substring, starting at the specified index.

Вам также может понравиться