
Herencia
Que es la herencia?
Herencia: Es la capacidad que tiene una clase de heredar los atributos y metodos de otra clase. Denominaremos especialización a la relación en donde una clase (la sublcase) hereda todas las principales caracterisiticas de la otra clase (la superclase).
La subclase puede agregra nuevos componentes (atributos y metodos) y reemplazar las implementaciones con los metodos heredados.
Si invertimos el punto de vista, es decir la superclase hereda las caracteristicas de las subclase entonces hablaremos de generalización.
Las principales ventajas de la herencia son:
- Los componentes comunies solo existen una unica vez en la superclase de modo que pueden ser mantenidos centralmente.
- Los componentes en las superclases estan disponibles tambien en las subclases, esto evita las implementaciones redundantes.
Declaración de herencia
Para declarar una relación de herencia añadiremos la adición INHERITING FROM a la sentencia de definción de la clase.
Se pueden declarar componentes privados en una subclase que tengan los mismos nombre que componentes privados de la superclase. Cada clase trabaja con sus propios componentes privados. Los metodos que una subclase hereda de una superclase usan los atributos privados de la superclase y no ningun componente privado de la subclase con el mismo nombre.
Tipos de herencia
- Simple: una clase puede tener mas de una subclase de las cuales es superclase, pero no puede tener una superclase de la cua es subclase.
- Multiple: una clase hereda de varias superclases. En los objetos ABAP no existe el concepto de herencia multiple. Sin embargo podemos utilizar interfaces para simular ese tipo de herencia.
Object: Es la mas general de todas las clases posibles ya que no contienen ni atributos ni metodos. Cuando se define una nueva clase no se tiene que especificar explicitamente esta clase como superclase, esta relación está definida implicitamente.