
Las propiedades de las programación Orientada a Objetos.- Existen tres propiedades fundamentales que presentan los objetos:
Encapsulación.- También conocido como "ocultamiento", se refiere a que todos los objetos restringen la visibilidad de sus recursos (atributos y métodos) al resto de los usuarios. Las tres áreas de visibilidad (pública, privada y protegida) son la base de la encapsulación. Cada objeto posee una interfase que determina la manera de interactuar con él. La implementación del objeto (su interior) es encapsulada, lo que quiere decir que desde fuera el objeto es invisible, simplemente se usa.
Herencia.- Es la capacidad que tiene una clase de heredar las propiedades y métodos de otra clase. La herencia permite crear una nueva clase a partir de una existente, heredando la nueva clase sus propiedades. Esto se realiza añadiendo la adición INHERITING FROM a la sentencia de definición de la clase: CLASS <subclass> DEFINITION INHERITING FROM <superclase>. La nueva clase hereda todos los componentes de la clase ya existente (La clase original se conoce como la superclase de la nueva que será la subclase).
Tipos de herencia.- Existen dos tipos de herencia:
- Simple.- Una clase puede tener más de una subclase de las cuales es superclase, pero sólo puede tener una superclase de la cual es subclase.
- Multiple.- Una clase hereda de carias superclases.
El nodo raíz de todos los árboles de herencia en los objetos ABAP es la clase predefinida vacía OBJET.
Polimorfismo.- Significa que métodos que se llaman exactamente igual pueden comportarse de manera distinta en clases diferentes. También se lo conoce como "Redefinición". Dicho de otra forma, el polimorfismo consiste en conseguir que un objeto de una clase se comporte como un objeto de cualquiera de sus subclases, dependiendo de la forma de llamar a los métodos de dicha clase o subclase. Todas las subclases contienen los componentes de todas las clases existentes entre ellas mismas y el nodo raíz del árbol de herencia. La visibilidad de un componentes no puede ser cambiada nunca.
En cambio se puede usar la adición REDEFINITION en la sentencia METHODS para redefinir un método público o protegido dependiendo de instancia en su subclase y hacer que realice una función más especifica.