Estimado: la hice larga... pero al final te respondo lo mejor que puedo
- Los datos privados de la clase Base *solo* los puedes acceder desde la clase Base. Desde la Derivada accedes a OTRA variable con el mismo nombre que no se inicializa hasta que no le des valor.
- Los datos protegidos de la Base, desde ambas, haz de cuenta que accedes "por referencia", o sea es la misma variable.
Ojo ... si tienes un constructor en la clase Base y ahi seteas variables privadas, para poder "verlas" con valor en la clase Derivada te toca hacer que el constructor de la clase derivada llame al constructor de la clase Base (padre) para que inicialice esa variable con ese valor.
Código PHP:
Class Foo
{ ... }
Class Bar extends Foo
{
public function __construct()
{
parent::__construct();
}
...
}
No hacer eso ultimo me estubo confundiendo un rato largo porque no veia valores que supuestamente metia en los objetos de la clase padre
Cita: ¿ Por que la clase Liquidacion puede acceder a los metodos protected de la clase Datos ?....
Ahora... eso es con DATOS.... con METODOS es lo mismo... tu puedes acceder a los metodos de la clase Base (Datos) porque estan en el mismo scope ... es como si los hubieras declarado Private en tu clase Liquidacion esos metodos protected.
Si haces Private los metodos en Datos... ya solo podras accederlos desde Datos y si re-declaras en Liquidacion sera OTRA funcion y no la misma, accediendo a su scope o sea los datos de Liquidacion y NO de Datos