Clases y Objetos
En Java, una clase es como un molde o plano: define qué datos (atributos) y qué comportamientos (métodos) tendrán los objetos creados a partir de ella. El operador new crea una instancia (objeto) de esa clase en memoria. Los atributos son las variables de cada objeto; los métodos son las acciones que puede realizar.
Esta organización en clases y objetos que imitan entidades del mundo real es la esencia de la Programación Orientada a Objetos (POO).
El encapsulamiento es uno de los pilares de la POO: ocultar los detalles internos y exponer solo lo necesario. En Java esto se logra con modificadores de acceso: private hace que un atributo solo sea accesible dentro de la clase, y se accede a él mediante getters y setters públicos.
Los setters pueden incluir validación (rechazar valores inválidos) sin que el código externo lo note. Los atributos static son compartidos por todos los objetos de la clase; los static son de instancia (cada objeto tiene su propio valor).
public class Persona {
// Atributos (private = encapsulado)
private String nombre;
private int edad;
private static int contadorPersonas = 0; // Compartido
// Constructor
public Persona(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
contadorPersonas++;
}
// Constructor sobrecargado
public Persona(String nombre) {
this(nombre, 0); // Llama al otro constructor
}
// Getters y Setters
public String getNombre() { return nombre; }
public void setNombre(String nombre) {
if (nombre == null || nombre.isEmpty())
throw new IllegalArgumentException("Nombre inválido");
this.nombre = nombre;
}
public int getEdad() { return edad; }
// Método de instancia
public String saludar() {
return "Hola, soy " + nombre + " y tengo " + edad + " años";
}
// Método estático
public static int getContador() { return contadorPersonas; }
// toString (para impresión)
@Override
public String toString() {
return "Persona{nombre=" + nombre + ", edad=" + edad + "}";
}
}
// Uso
Persona p1 = new Persona("Ana", 25);
Persona p2 = new Persona("Carlos", 30);
System.out.println(p1.saludar());
System.out.println(Persona.getContador()); // 2
Practica esta lección
Resuelve los ejercicios del curso de Java en la app, gratis y con corrección automática.
Empezar a practicar