Modificadores de acceso
public
, private
, y protected
son los tres modificadores de acceso utilizados en clase para controlar su acceso desde el exterior. De forma predeterminada, todos los miembros (propiedades, campos, métodos o funciones) son accesibles públicamente desde fuera de la clase.
class Coche {
constructor(nombre) {
this.nombre = nombre;
}
static hola(x) {
return "Hola " + x.nombre;
}
}
let miCoche = new Coche("Toyota");
console.log(Coche.hola(miCoche)); // Hola Toyota
Los miembros privados
sólo pueden accederse internamente dentro de la clase y no pueden ser accesibles desde fuera. Los elementos de la clase privados deben comenzar con el carácter de la almohadilla: #
.
class Coche {
constructor(nombre) {
this.nombre = nombre;
}
static hola(x) {
return "Hola " + x.nombre;
}
#presenta(nombrecoche) {
return 'Tengo un ' + this.nombrecoche;
}
}
let miCoche = new Coche("Toyota");
console.log(miCoche.#presenta("Camry")); // Error
console.log(Coche.hola(miCoche)); // Hola Toyota
Solo se puede acceder a los campos protected
(protegidos, en español) desde dentro de la clase y desde aquellos que la extienden. Estos son útiles para la interfaz interna ya que la clase heredera también obtiene acceso a la clase principal. Los elementos de la clase protegidos deben comenzar con el carácter del subrayado: _
.
class Coche {
constructor(marca) {
this.nombrecoche = marca;
}
_presenta() {
return 'Tengo un ' + this.nombrecoche;
}
}
class Modelo extends Coche {
constructor(marca, modelo) {
super(marca);
this.modelo = modelo;
}
muestra() {
return this._presenta() + ', es un ' + this.modelo;
}
}
let miCoche = new Modelo("Toyota", "Camry");