Guía y comprobaciones
Define qué representa una instancia
Una clase reúne datos y operaciones relacionados. Para un contador que nunca debe ser negativo, no basta con declarar un campo público: cualquier parte del programa podría asignarle -5. Un campo privado permite controlar los cambios mediante métodos.
Archivo Contador.java:
public class Contador {
private int valor;
public Contador(int inicial) {
if (inicial < 0) throw new IllegalArgumentException("Inicial negativo");
valor = inicial;
}
public void incrementar() {
valor = Math.addExact(valor, 1);
}
public int getValor() {
return valor;
}
}
El constructor establece el estado inicial. incrementar usa Math.addExact para que un desbordamiento no convierta silenciosamente un entero máximo en uno negativo.
Usar la clase desde otra
Archivo Ejemplo.java en el mismo directorio, sin declaración de paquete:
public class Ejemplo {
public static void main(String[] args) {
Contador primero = new Contador(2);
Contador segundo = new Contador(0);
primero.incrementar();
System.out.println(primero.getValor()); // 3
System.out.println(segundo.getValor()); // 0
}
}
Compila ambos archivos con un JDK compatible: javac Contador.java Ejemplo.java, y ejecuta java Ejemplo. El nombre del archivo debe coincidir con el de su clase pública. Si añades un paquete, también cambian la ubicación y la forma de lanzar el programa.
Instancia y static
Cada objeto tiene su propio valor. Si convirtieras el campo en static, lo compartirían todas las instancias y el ejemplo dejaría de representar dos contadores independientes. Un método estático tampoco dispone automáticamente del objeto al que se refiere this.
No añadas un setter a todos los campos por costumbre. Una operación como incrementar comunica mejor una regla que permitir cualquier asignación. Cuando la clase crezca, revisa si sigue representando un solo concepto: almacenar un contador y enviar correos no son responsabilidades que necesiten mezclarse aquí.
Preguntas frecuentes
¿Tiene que coincidir el nombre del archivo?
Sí, para una clase pública de nivel superior como Contador, el archivo se llama Contador.java.
¿Por qué valor es private?
Para que los cambios pasen por operaciones que mantengan la regla de no negatividad y no se modifique desde cualquier otra clase.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.