sábado, 27 de octubre de 2012

Sobreescritura y Sobrecarga de métodos

Buenas amigos, en este nuevo tema vamos a hablar de la "Sobreescritura" y "Sobrecarga" de los métodos.No es un tema muy extenso, pero si de suma importancia a la hora de hacer una programación más eficiente.

La sobrecarga consiste en poder crear un mismo método tantas veces como se quiera, pero han de tener diferentes "lista de argumentos", es decir, yo puedo crear un método:


        • public void unMetodo(){
          • //código
        • }
y lo podemos sobrecargar de la siguiente manera:
        • public void unMetodo(int x){
          • //código
        • }
Como veis, el método es el mismo, se llaman igual, pero tienen diferente lista de argumentos. Estas distintas versiones pueden estar en una misma clase o repartidos entre esta y su "superclase".


Un método sobrecargado puede tener:
      • Diferente tipo de retorno.
      • Diferentes modificadores de acceso
      • Lanzar diferentes excepciones.
Por otro lado tenemos los métodos "Sobreescritos", estos, son métodos pertenecientes a la clase "padre" de una Herencia, los cuales son declarados en la clase "hija" para modificar algún tipo de comportamiento más específico.

Estos métodos han de tener:
      • La misma lista de argumentos
      • El mismo tipo de devolución
      • El nivel de visibilidad del método debe ser igual o menos restrictivo al que sobrescribe. 
        • Los modificadores de acceso de menor a mayor visibilidad son:
          • Private
          • Default
          • Protected
          • Public
      • No se pueden declarar nuevas "Excepciones" (Ya veremos este tema) en el método sobrescrito, aunque si se pueden declarar nuevas "Excepciones" que sean subclases de las Excepciones que lance el método sobrescrito.
      • Métodos declarados como "final" o "private" NO pueden ser "sobreescritos"



Como podemos ver, copiamos el método de la clase "padre" en la clase "hija" pudiendo de esta manera modificarlo y poder hacer con él algo más especifico, o lo que se desee...Como este método tiene una visibilidad de "public" al sobreescribirlo, lo debemos poner como "public" o nos producirá un error de compilación ya que public es la máxima visibilidad y no podemos restringirla, si el método de la clase padre fuese "protected" podríamos cambiarle la visibilidad a "public" y si fuese "default" podríamos cambiarle la visibilidad por "protected" o por "public".

Poco más queda decir sobre esto, una vez conocidas las reglas de la "sobreescritura" y la "sobrecarga" resulta sencillo aplicarlas.

Un saludo a todos.

4 comentarios: