Java
Tutorial Java: Clases y objetos
Java clases y objetos: creación y uso. Aprende a crear y usar clases y objetos
Aprende Java GRATIS y certifícateEn Java, uno de los lenguajes de programación más populares y ampliamente utilizados, el paradigma fundamental es la programación orientada a objetos (POO). Los dos conceptos centrales de este paradigma son las clases y los objetos. Antes de entrar en detalle sobre estos conceptos, es importante entender que en POO todo se concibe como objetos interactuando entre sí.
Clases en Java
En POO, una clase es una plantilla o un molde para crear objetos. Una clase define un tipo de objeto especificando qué atributos (variables) y qué comportamientos (métodos) tendrá el objeto de esa clase.
Veamos un ejemplo simple. Supongamos que queremos modelar una bicicleta en nuestro programa. Podríamos tener una clase "Bicicleta" que se vea algo así:
public class Bicicleta {
// atributos
int velocidad;
int engranaje;
// métodos
void cambiarEngranaje(int nuevoEngranaje) {
engranaje = nuevoEngranaje;
}
void acelerar(int incremento) {
velocidad = velocidad + incremento;
}
void frenar(int decremento) {
velocidad = velocidad - decremento;
}
}
En este ejemplo, velocidad
y engranaje
son atributos de la clase Bicicleta
. Estos representan el estado de un objeto de esta clase. Los métodos cambiarEngranaje
, acelerar
y frenar
son los comportamientos que definen cómo un objeto Bicicleta
puede interactuar con su estado.
En Java, una clase se define utilizando la palabra clave class
, seguida del nombre de la clase (en este caso, Bicicleta
). El cuerpo de la clase se encuentra dentro de llaves { }
. Dentro del cuerpo de la clase se definen los atributos y los métodos.
Objetos en Java
Un objeto es una instancia de una clase. Crear un objeto a partir de una clase se llama instanciación. Cuando se crea un objeto, se reserva un espacio en memoria para ese objeto y se configura con los atributos y comportamientos definidos por su clase.
Volviendo a nuestro ejemplo, podríamos crear una Bicicleta
de la siguiente manera:
Bicicleta miBicicleta = new Bicicleta();
Aquí, miBicicleta
es un objeto de la clase Bicicleta
. new
es una palabra clave en Java que se utiliza para crear un nuevo objeto. Después de new
, se especifica el nombre de la clase a partir de la cual se creará el objeto.
Una vez que tenemos un objeto, podemos interactuar con él. Podríamos cambiar el engranaje de miBicicleta
o acelerarla así:
miBicicleta.cambiarEngranaje(2);
miBicicleta.acelerar(3);
Estas líneas de código llaman a los métodos cambiarEngranaje
y acelerar
en el objeto miBicicleta
, alterando el estado de miBicicleta
.
Por tanto, en la programación orientada a objetos en Java, las clases actúan como plantillas para crear objetos, y los objetos son instancias de clases que encapsulan su propio estado y comportamiento.
Encapsulación en Java
Un principio fundamental en la programación orientada a objetos es la encapsulación. La encapsulación se refiere a la práctica de ocultar los detalles internos de cómo se implementa una clase y exponer solo lo que es seguro y necesario para otras clases y objetos que interactúan con ella. Esta práctica implica restringir el acceso a algunos componentes en los objetos de la programación orientada a objetos, lo que se hace declarando las variables de la clase como privadas y proporcionando métodos públicos (getters y setters) para acceder y actualizar el valor de las variables.
En el ejemplo de Bicicleta
, podemos hacer los atributos velocidad
y engranaje
privados y proporcionar métodos públicos para interactuar con ellos. Esto se llama hacer "getters" y "setters". Aquí está cómo podríamos hacerlo:
public class Bicicleta {
// atributos privados
private int velocidad;
private int engranaje;
// métodos públicos
public int getVelocidad() {
return velocidad;
}
public void setVelocidad(int velocidad) {
this.velocidad = velocidad;
}
public int getEngranaje() {
return engranaje;
}
public void setEngranaje(int engranaje) {
this.engranaje = engranaje;
}
public void acelerar(int incremento) {
velocidad = velocidad + incremento;
}
public void frenar(int decremento) {
velocidad = velocidad - decremento;
}
}
Los atributos velocidad
y engranaje
ahora son private
, lo que significa que solo se pueden acceder dentro de la misma clase Bicicleta
. Sin embargo, otras clases aún pueden interactuar con estos atributos a través de los métodos getVelocidad
, setVelocidad
, getEngranaje
y setEngranaje
, que son public
y, por lo tanto, accesibles desde cualquier parte del programa.
La encapsulación proporciona varios beneficios. Ayuda a proteger los datos del objeto para que no se modifiquen accidentalmente de manera insegura. También hace que el código sea más fácil de mantener, ya que los detalles internos de cómo se implementa una clase pueden cambiar sin afectar a otras partes del programa que la utilizan.
Conclusión
En conclusión, las clases y los objetos son conceptos centrales en la programación orientada a objetos en Java. Una clase es una plantilla para crear objetos, definiendo los atributos y comportamientos que tendrán los objetos de esa clase. Un objeto es una instancia de una clase, encapsulando su propio estado y comportamiento. La encapsulación es un principio importante en la programación orientada a objetos que implica ocultar los detalles de implementación de una clase y exponer solo lo que es seguro y necesario. Estos conceptos proporcionan una base sólida para la programación en Java y muchos otros lenguajes de programación orientados a objetos.
Ejercicios de esta lección Clases y objetos
Evalúa tus conocimientos de esta lección Clases y objetos con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Clases abstractas
Streams: reduce()
Streams: flatMap()
Llamada y sobrecarga de funciones
Métodos referenciados
Métodos de la clase String
Representación de Fecha
Operadores lógicos
Tipos de datos
Estructuras de iteración
Streams: forEach()
Objetos
Funciones lambda
Uso de Scanner
CRUD en Java de modelo Customer sobre un ArrayList
Tipos de variables
Streams: collect()
Operadores aritméticos
Interfaz funcional Consumer
API java.nio 2
API Optional
Interfaz funcional Function
Encapsulación
Interfaces
Uso de API Optional
Representación de Hora
Herencia básica
Clases y objetos
Interfaz funcional Supplier
HashMap
Sobrecarga de métodos
Polimorfismo de tiempo de ejecución
OOP en Java
Creación de Streams
Streams: min max
Métodos avanzados de la clase String
Polimorfismo de tiempo de compilación
Excepciones
Herencia avanzada
Estructuras de selección
Uso de interfaces
HashSet
Objeto Scanner
Streams: filter()
Operaciones de Streams
Interfaz funcional Predicate
Streams: sorted()
Configuración de entorno
CRUD en Java de modelo Customer sobre un HashMap
Uso de variables
Clases
Streams: distinct()
Streams: count()
ArrayList
Datos de referencia
Interfaces funcionales
Métodos básicos de la clase String
Instalación
Funciones
Estructuras de control
Herencia de clases
Streams: map()
Funciones y encapsulamiento
Streams: match
Gestión de errores y excepciones
Datos primitivos
Todas las lecciones de Java
Accede a todas las lecciones de Java y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Javascript
Sintaxis
Tipos De Datos
Sintaxis
Variables
Sintaxis
Operadores
Sintaxis
Estructuras De Control
Sintaxis
Funciones
Sintaxis
Funciones Cierre (Closure)
Sintaxis
Funciones Flecha
Programación Funcional
Filtrado Con Filter() Y Find()
Programación Funcional
Transformación Con Map()
Programación Funcional
Reducción Con Reduce()
Programación Funcional
Clases Y Objetos
Programación Orientada A Objetos
Excepciones
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Array
Estructuras De Datos
Conjuntos Con Set
Estructuras De Datos
Mapas Con Map
Estructuras De Datos
Manipulación Dom
Dom
Selección De Elementos Dom
Dom
Modificación De Elementos Dom
Dom
Eventos Del Dom
Dom
Callbacks
Programación Asíncrona
Promises
Programación Asíncrona
Async / Await
Programación Asíncrona
Instalación De Java
Introducción Y Entorno
Configuración De Entorno Java
Introducción Y Entorno
Ecosistema Jakarta Ee De Java
Introducción Y Entorno
Tipos De Datos
Sintaxis
Variables
Sintaxis
Operadores
Sintaxis
Estructuras De Control
Sintaxis
Funciones
Sintaxis
Excepciones
Programación Orientada A Objetos
Clases Y Objetos
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Clases Abstractas
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Sobrecarga De Métodos
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
La Clase Scanner
Programación Orientada A Objetos
Métodos De La Clase String
Programación Orientada A Objetos
Listas
Framework Collections
Conjuntos
Framework Collections
Mapas
Framework Collections
Funciones Lambda
Programación Funcional
Interfaz Funcional Consumer
Programación Funcional
Interfaz Funcional Predicate
Programación Funcional
Interfaz Funcional Supplier
Programación Funcional
Interfaz Funcional Function
Programación Funcional
Métodos Referenciados
Programación Funcional
Creación De Streams
Programación Funcional
Operaciones Intermedias Con Streams: Map()
Programación Funcional
Operaciones Intermedias Con Streams: Filter()
Programación Funcional
Operaciones Intermedias Con Streams: Distinct()
Programación Funcional
Operaciones Finales Con Streams: Collect()
Programación Funcional
Operaciones Finales Con Streams: Min Max
Programación Funcional
Operaciones Intermedias Con Streams: Flatmap()
Programación Funcional
Operaciones Intermedias Con Streams: Sorted()
Programación Funcional
Operaciones Finales Con Streams: Reduce()
Programación Funcional
Operaciones Finales Con Streams: Foreach()
Programación Funcional
Operaciones Finales Con Streams: Count()
Programación Funcional
Operaciones Finales Con Streams: Match
Programación Funcional
Api Optional
Programación Funcional
Api Java.nio 2
Entrada Y Salida (Io)
Api Java.time
Api Java.time
Certificados de superación de Java
Supera todos los ejercicios de programación del curso de Java y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.
En esta lección
Objetivos de aprendizaje de esta lección
- Entender la diferencia entre una clase y un objeto en Java.
- Saber cómo definir una clase en Java.
- Aprender a crear un objeto a partir de una clase.
- Entender la importancia de la encapsulación en la programación orientada a objetos.
- Saber cómo implementar la encapsulación en una clase a través de atributos privados y métodos públicos.
- Conocer cómo interactuar con los atributos y métodos de un objeto.