
HERENCIA – LECCION 2-2
¿QUE ES LA HERENCIA?
Es la capacidad que tiene una clase de heredar los atributos y métodos de otra clase
La herencia permite crear una nueva clase a partir de una existente, heredando la nueva clase sus propiedades.
Denominaremos ESPECIALIZACION a la relación en donde una clase (la subclase) hereda todas las principales características de otra clase (la superclase)
La subclase puede agregar nuevos componentes (atributos y métodos) y reemplazar las implementaciones con los métodos heredados
Las principales ventajas de la herencia son:
- Los componentes comunes solo existen una única vez en la superclase de modo que pueden ser mantenidos centralmente
- Los componentes en las superclases están disponibles también en la subclases, esto evita las implementaciones redundantes}
DECLARACION DE HERENCIA
Para declarar una relación de herencia añadiremos la adicion INHERITING FROM a la sentencia de definición de la clase
CLASS <subclass> DEFINITION INHERINTING FROM
<superclass>.
La nueva clase hereda todos los componentes de la clase ya existente
Si no se añade ninguna declaración a la subclase, esta contiene los mismos componentes que la superclase, de cualquier manera, solo componentes públicos y protegidos de la superclase son visibles a la subclase
NOTA, aunque los componentes privados de la superclase existen en la subclase, no son visibles
Se pueden declarar componentes privados en una subclase que tengan los mismos nombres que componentes privados de la superclase
Casa clase trabaja con sus propios componentes privados. Los métodos que una subxlase hereda de una superclase usan los atributos privados de la superclase y no ningún componente privado de la subclase con el mismo nombre
TIPOS DE HERENCIA
Existen dos tipos de herencia
- Simple, una clase puede tener más de una subclase de las cuales es superclase, pero solo puede tener una superclase de la cual es subclase
- Multiples, una clase hereda varias superclases
NOTA, en los objetos ABAP no existe el concepto de herencia múltiple. Sin embargo, podemos utilizar interfaces (conceptos que veremos luego) para simular este tipo de herencia
Cuando una subclase hereda de una superclase que a su vez hereda de otra superclase de la cual es subclase, se firma una estructura de árbol en la cual el frado de especialización aumenta con cada nivel jerárquico que se añada
A la inversa, las clases se hacen más generales hasta que se alcanza el nodo raíz del árbol de herencia
NOTA, el nodo raíz de todos los arboles de herencia en los objetos ABAP es la clase predefinida vacía OBJECT
OBJECT, es la más general de todas las clases posibles ya que no contiene ni atributos ni métodos, cuando se define una nueva clase no se tiene que especificar explícitamente esta clase como superclase, esta relación está definida implícitamente