Inicio > Cursos > Java > Clases y Objetos
JavaProgramación Orientada a ObjetosLección 4 de 15

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
Consejo🔒 Encapsulamiento: haz los atributos private y accede a ellos con getters/setters. Esto permite validación y control de acceso.
← Control de FlujoHerencia, Interfaces y Polimorfismo →

Practica esta lección

Resuelve los ejercicios del curso de Java en la app, gratis y con corrección automática.

Empezar a practicar