Clases y Objetos en Java

🧩 Clases y Objetos en Java: entendámoslo bien
Comencemos esta sección tomando un vistazo más cercano a clases y objetos. Primero, una aclaración importante: muchas veces la gente usa las palabras clase y objeto como si fueran lo mismo… pero en realidad son fundamentalmente diferentes.
Una clase es un blueprint (un plano) o una plantilla para crear objetos.
Un objeto, en cambio, es una instancia de una clase: es decir, una “copia real” creada a partir de esa plantilla.
🏗️ Clase = plantilla, Objeto = instancia
Imagina esto:
- CLASE:
Car - OBJETOS:
car1,car2,car3
La clase es el diseño general. Los objetos son los carros reales construidos con ese diseño.
🚗 Ejemplo: Clase Car
Por ejemplo, podemos tener una clase llamada Car. En esta clase definimos todo lo que necesitamos saber sobre un carro.
Un carro tiene atributos, como:
- si está encendido o no (
isOn) - su velocidad actual (
currentSpeed) - su cambio actual (
currentGear) - y así en adelante…
En un programa, implementamos estos atributos usando fields (campos), que son como variables definidas dentro de una clase.
Así que, por ejemplo, la velocidad actual de un carro se guardaría en un field como currentSpeed.
⚙️ Métodos: lo que el objeto puede hacer
Pero un carro no solo “tiene cosas”… también hace cosas.
Una clase también puede definir comportamientos, es decir, métodos, como:
start()(arrancar)stop()(parar)pause()(pausar, si aplica)changeSpeed()(cambiar velocidad)- etc.
Y aquí viene la parte clave: cuando llamamos un método, el estado del objeto puede cambiar.
Por ejemplo, si llamamos un método para cambiar la velocidad, entonces el valor de currentSpeed cambia.
🧠 Entonces… ¿qué es un objeto?
Esta clase Car es un template o blueprint para crear nuevos objetos. Y un objeto es una instancia de una clase: basado en este template podemos crear muchas instancias como:
car1car2car3
Todos esos objetos tendrán los mismos fields y métodos, porque vienen de la misma clase… pero son independientes entre sí.
🧠 Independencia entre objetos: cada uno vive su vida
Cada objeto vive en un espacio separado de la memoria y puede tener un estado distinto.
Por ejemplo:
car1puede ir a 80 km/h en terceracar2puede estar apagado en neutrocar3puede ir a 10 km/h en primera
Misma clase. Mismos métodos. Pero datos diferentes en cada objeto.
🧩 UML: una forma visual de ver clases y objetos
Por cierto, aquí estoy usando UML para representar clases y objetos.
UML significa Unified Modeling Language (Lenguaje Unificado de Modelado). Es un lenguaje visual simple que usamos para mostrar clases y sus relaciones.
UML es un tema grande (da para un curso completo), pero aquí vamos a usarlo solo un poquito para visualizar ideas.
💡 Otro ejemplo: una lámpara
Piensa en una lámpara.
Estados (atributos)
Una lámpara puede tener solo dos estados posibles:
- encendida (on)
- apagada (off)
Así que podemos representar esto con un estado llamado isOn, y su tipo debería ser boolean (verdadero o falso).
Comportamientos (métodos)
Nuestra clase Lamp tendría métodos como:
turnOn()turnOff()
Cuando llamamos a esos métodos, el estado isOn cambia.
📺 Pregunta rápida: ¿y una TV?
Pausa un segundo y piensa: ¿qué estados y comportamientos tiene un televisor?
Respuesta: un objeto TV podría tener estados como:
- volumen actual
- canal actual
- si está encendido o apagado
Y comportamientos como:
turnOn()turnOff()volumeUp()volumeDown()changeChannel()
🧑💻 Un ejemplo más real: una caja de texto
Tal vez pienses: “Ok, pero en mis aplicaciones no manejo carros o TVs…” Perfecto, entonces pensemos en algo super común en software: una caja de texto.
Una clase TextBox podría tener atributos como:
- el texto actual dentro de la caja
- el límite de caracteres permitidos
- el ancho en píxeles
- si está enfocada o no
- si está habilitada o deshabilitada
Y métodos como:
setText()clear()enable()disable()focus()
Entonces, si te queda una sola frase de esta sección, que sea esta:
Una clase define el molde (atributos + métodos). Un objeto es una instancia real de ese molde, con su propio estado en memoria.