Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

138
Visualizações
¿Cómo accedería o anularía una propiedad privada de una clase base dentro de una declaración de clase derivada?

¿Cómo harías esto sin:

  • exponer públicamente la propiedad privada de la clase base a través de setters y getters como en esta respuesta
  • o tener que duplicar cualquier método y propiedad relevante de la clase base en la clase derivada

Las propiedades deben permanecer verdaderamente privadas, excepto dentro de la declaración de clase derivada, por lo que no puede usar la convención de subrayado de variable protegida _ .

Supongamos que tengo el siguiente código

 class CoffeeMachine { #waterLimit = 600; #waterAmount = 0; constructor() {} set waterAmount(amount) { if (amount < 0) { this.#waterAmount = 0; } else if (amount > this.#waterLimit) { this.#waterAmount = this.#waterLimit; } else { this.#waterAmount = amount; } } get waterAmount() { return this.#waterAmount; } } class TeaMachine extends CoffeeMachine { constructor() { super(); } }

Me gustaría que la TeaMachine fuera más pequeña, así que quiero que sea #waterLimit igual a 400 en lugar de 600

Simplemente hacer lo siguiente no funciona

 class TeaMachine extends CoffeeMachine { #waterLimit = 400; constructor() { super(); } } const teaBox = new TeaMachine(); teaBox.waterAmount = 1000; console.log(teaBox.waterAmount); // 600

Esto es lo más cerca que pude estar

El límite de agua se establece en el inicio, pero ya no es accesible después. Aunque obviamente esta no es una solución perfecta.

 class CoffeeMachine { #waterLimit; #waterAmount = 0; constructor(limit = 600) { this.#waterLimit = limit; } } class TeaMachine extends CoffeeMachine { constructor() { super(400); } } const teaBox = new TeaMachine(); teaBox.waterAmount = 1000; console.log(teaBox.waterAmount); // 400

Creo que esto es posible en Java

¿Es posible hacer esto en JavaScript mientras se cumplen las condiciones mencionadas anteriormente? ¿O tendré que aceptar las restricciones del idioma / seguir la ruta de WeakMap ?

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda