Access Modifiers
Quetzal provides access modifiers to control the visibility of object members.
publico (Public)
Section titled “publico (Public)”Members in the publico block are accessible from anywhere.
objeto Usuario { publico: texto nombre
Usuario(texto nombre) { ambiente.nombre = nombre }
texto obtener_nombre() { retornar ambiente.nombre }}
Usuario u = nuevo Usuario("Ana")texto nombre = u.obtener_nombre() // Accessibletexto directo = u.nombre // Also accessibleprivado (Private)
Section titled “privado (Private)”Members in the privado block are only accessible within the object itself.
objeto Cuenta { privado: numero var saldo = 0 texto clave_secreta
log validar_clave(texto clave) { retornar ambiente.clave_secreta == clave }
publico: Cuenta(numero inicial, texto clave) { ambiente.saldo = inicial ambiente.clave_secreta = clave }
numero consultar_saldo(texto clave) { si (ambiente.validar_clave(clave)) { retornar ambiente.saldo } retornar -1 }}Default Visibility
Section titled “Default Visibility”Members declared without a visibility block are public by default.
objeto Simple { texto nombre // Public by default entero valor = 0 // Public by default
Simple(texto nombre) { ambiente.nombre = nombre }}libre (Static)
Section titled “libre (Static)”The libre keyword creates static members that belong to the object itself, not instances.
objeto Matematicas { libre numero PI = 3.14159
libre numero cuadrado(numero valor) { retornar valor * valor }}
// Use without instantiationnumero area = Matematicas.PI * Matematicas.cuadrado(5)Combining Modifiers
Section titled “Combining Modifiers”You can have both private static and public static members:
objeto Utilidades { privado: libre entero var contador = 0
publico: libre entero obtener_contador() { retornar ambiente.contador }
libre vacio incrementar() { ambiente.contador++ }}Best Practices
Section titled “Best Practices”- Use
privadofor internal implementation details - Use
publicofor the object’s interface - Use
librefor utility functions that don’t need instance state - Prefer getters/setters over direct attribute access for better encapsulation