Classes, Visibility, Private (visibilidad privada) Classes, Visibility, Private (visibilidad privada)

🥇 Classes, Visibility, Private (visibilidad privada)

La visibilidad private funciona como protected en el sentido que no permite que el elemento sea accedido fuera de la clase. Sin embargo a diferencia de protected, no permite que las clases que hereden de la clase base lo utilicen, por lo que solo puede ser utilizado por la clase en la cual fue definido.

class Base {
    private x = 0;
}

class Derivada1 extends Base {
  imprimirX() {
    console.log(this.x); // <- esta linea generará un error
  }
}

const b = new Base();
console.log(b.x); // <- esta linea tambien generará un error

En este ejemplo estamos intentando acceder a la propiedad x, pero al ser private no puede ser accedida fuera de la clase.

Tampoco es posible acceder a x desde una clase que extiende Base como es el caso de Derivada1.

🍿 Cross-instance private access (private entre diferentes instancias de la misma clase)

Diferentes lenguajes de POO (Programación Orientada a Objetos) tienen visiones diferentes en relación a como deben manejarse los permisos de private entre instancias de la misma clase. Lenguajes como Java, C#, C++, Switch y PHP lo permiten, mientras que para otros como Ruby no.

class A {
  private x = 10;

  public imprimirX(otra: A) {
    console.log(otra.x); // <- podemos acceder a una propiedad privada de otra instancia
  }
}

🍿 Consideraciones

Como otros aspectos de TypeScript, private y protected solo son analizados durante la revisión del tipado. Esto quiere decir que solo se JavaScript durante su ejecución puede acceder tanto a elementos private como protected.

Classes, Visibility, Protected (visibilidad protegida) Classes, Static Members (elementos estáticos)
comments powered by Disqus