4. Uso de Super Geraqua Multinivel Constructores y Herencia

Embed Size (px)

DESCRIPTION

4. Uso de Super Geraqua Multinivel Constructores y Herencia

Citation preview

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    USO DE SUPER.

    Con la palabra reservada super podemos acceder desde una subclase a los miembros (variables y

    mtodos) de la superclase inmediata, si se trata de una jerarqua de clases. super tambin se

    utiliza al invocar desde la subclase el constructor de la superclase. super siempre hace referencia a

    la superclase inmediata superior. Adems, es la primera instruccin ejecutada dentro de un

    constructor de la subclase.

    GENERACIN DE UNA GERARQUA MULTINIVEL.

    La jerarqua multinivel en herencia se da en el momento que creamos clases a partir de otras,

    pudiendo, una subclase B convertirse en una superclase de la clase C.

    As:

    Vea como tenemos una jerarqua de

    clases, la superclase de B, C y D es A.

    Sin embargo, una subclase tambin

    puede comportarse como superclase,

    como es el caso de B, D y E.

    Los miembros de la clase A que no sean

    privados se heredarn en todo el resto

    de clases, adems cada una podr

    tener la definicin de sus propios

    miembros (variables y mtodos). Cada

    clase puede tener constructores y no

    olvide, estos no se heredan.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    CONSTRUCTORES Y HERENCIA.

    Una subclase puede llamar a un constructor definido por su superclase mediante el uso de la

    palabra reservada super.

    super debe ser siempre la primera instruccin que escriba en el constructor de la super clase, es

    importante aclarar que la llamada al constructor de la superclase solo es posible hacerla desde un

    constructor, no desde un mtodo.

    Veamos algunos ejercicios:

    Ejercicio 1.

    Vea como en la clase Persona se tiene un constructor sin parmetros y que imprime un

    mensaje.

    En la clase Estudiante se define un constructor, el cual simplemente invoca al de su superclase,

    eso se logra a travs de super. Si el constructor de la superclase tuviera parmetros, al

    momento de invocarlo se deben enviar los respectivos argumentos.

    Pueden agregarse ms instrucciones en el constructor de la clase Estudiante, pero la lnea de

    super debe ser la primera.

    Al tener sobrecarga de constructores en la superclase, no es posible intentar invocar a cada uno

    mediante la utilizacin de ms de un super, si eso se intenta hacer el compilador le enva un

    mensaje de error. Slo puede llamar a uno.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Ejercicio 2.

    Aqu tenemos en la clase Personas dos variables que son inicializadas con los parmetros del

    constructor, tambin vemos un mtodo cuya funcin es imprimir un mensaje en pantalla

    concatenando el contenido de las variables.

    La clase Estudiante tiene un constructor con parmetros, los cuales se convierten en

    argumentos en la llamada al constructor de la superclase (lnea 20).

    En la lnea 21 vea que se est utilizando una variante de super, en ella se est invocando un

    miembro de la super clase (mtodo NombreCompleto). Cuando la invocacin es hacia un

    miembro y no hacia un constructor, no hay ningn problema que no sea la primera instruccin,

    adems tambin puede realizarse desde un mtodo.

    En la lnea 29 se ejecuta el constructor de la subclase, el cual se encarga de llamar el de la

    superclase y la ejecucin del mtodo.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Ejercicio 3.

    En la clase Persona se tienen dos variables, un constructor y un mtodo. De esa clase se ha heredado Estudiante, en

    donde se declaran una variable y un constructor, vea que en este se tienen tres parmetros, su funcin es invocar el

    constructor de su superclase, pasndole como argumento dos de sus parmetros, con el otro parmetro se inicializa

    la variable carrera (lnea 22).

    Vea el mtodo que se declara en la lnea 24, el formato de l es exactamente igual al declarado en la superclase

    (lnea 10), la diferencia entre ambos es lo que hacen (imprimen mensajes distintos). Cuando en una subclase se

    declaran mtodos con formatos iguales a otros declarados en la superclase, se dice que se tiene una sobrescritura de

    mtodos. Un mtodo sobrescrito puede sobrecargarse.

    En este mtodo hacemos la invocacin del mtodo de la super clase (lnea 26), por tanto, cuando desde la lnea 36 se

    llame al mtodo DatosPersonales, de la clase Estudiante, este se encargar de llamar al mtodo de la superclase.

    Cuando a travs de super se invoca un miembro de la superclase (variable o mtodo), no habr inconveniente en que

    esa instruccin no sea la primera.

  • Universidad Tecnolgica de El Salvador

    Programacin Orientada a Objetos Ing. Jos Oswaldo Barrera Montes

    Ejercicio 4 (le dar error).

    ESTE EJERCICIO DAR ERROR!!

    Este es el mismo ejercicio anterior, con una pequea variante, pero suficiente para que se produzca un

    error y arruine por completo su funcionamiento.

    Recuerda cuando hablbamos de la palabra reservada final, decamos que un mtodo definido como final

    no podr ser sobrescrito. Por esa razn este ejercicio producir un mensaje de error, ya que el mtodo de

    la superclase ha sido definido como final y en la subclase se est intentando hacer una sobrescritura (lnea

    24). La solucin al error es no hacer la sobrescritura y hacer los acomodos necesarios en las instrucciones.