Clases: modelo que define las características y comportamientos comunes de un tipo de objeto.
Objetos: instancia de una clase que representa una entidad concreta combinando datos y el comportamiento asociado a ellos.
Encapsulación: principio que agrupa datos y métodos dentro de una clase, ocultando los detalles internos y exponiendo solo lo necesario mediante una interfaz pública.
Herencia: mecanismo por el que una clase (subclase) puede extender otra (superclase), heredando sus atributos y métodos y pudiendo añadir o sobreescribir comportamiento.
Polimorfismo: capacidad de que un mismo método o referencia se comporte de formas distintas según el tipo real del objeto sobre el que actúa.
Mensajes: forma en que los objetos se comunican entre sí. Enviar un mensaje equivale a invocar un método sobre un objeto.
Atributos: variables que pertenecen a una clase y almacenan el estado de cada objeto.
Atributos estáticos: atributos que pertenecen a la clase en sí, no a cada instancia. su valor es compartido por todos los objetos de esa clase (static en Java).
Métodos: funciones definidas dentro de una clase que describen el comportamiento de sus objetos.
Getters y setters: métodos de acceso (getX()) y modificación (setX()) de atributos privados, que permiten controlar cómo se leen y escriben los datos.
Sobrecarga de métodos (overloading): definición de varios métodos con el mismo nombre pero distinta lista de parámetros (tipo o número), dentro de la misma clase.
Métodos estáticos: métodos que pertenecen a la clase y no a las instancias. Se pueden invocar sin crear un objeto (NombreClase.metodo()).
Constructores: métodos especiales que se ejecutan al crear un objeto. Inicializan sus atributos y tienen el mismo nombre que la clase. Una clase puede tener varios constructores sobrecargados.
Creación de objetos: proceso de instanciar una clase mediante el operador new, que reserva memoria y llama al constructor (Persona p = new Persona()).
Ámbito de las variables: región del código en la que una variable es accesible. Puede ser local (dentro de un método), de instancia (en toda la clase) o de clase (estática).
Encapsulamiento — modificadores de acceso: palabras clave (private, protected, public, package-private) que controlan desde dónde se puede acceder a atributos y métodos.
Constantes: valores fijos que no cambian durante la ejecución, declarados con static final en Java (p. ej. static final double PI = 3.14159).
Paquetes: mecanismo de organización que agrupa clases relacionadas bajo un espacio de nombres común, evitando conflictos y facilitando la modularidad (package com.empresa.proyecto).
Enumerados (Enums): tipo especial de clase que define un conjunto fijo de constantes con nombre (p. ej. LUNES, MARTES, …). Pueden tener atributos y métodos propios.
Método main: punto de entrada de una aplicación Java: public static void main(String[] args). Es estático porque la JVM lo invoca sin necesidad de crear ningún objeto.
Documentación (Javadoc): comentarios especiales (/** ... */) que preceden a clases y métodos y que la herramienta javadoc convierte en HTML. Se complementa con etiquetas como @param, @return o @throws.
Wrappers: clases que envuelven los tipos primitivos (int → Integer, double → Double, etc.) para poder usarlos como objetos, acceder a métodos de conversión y trabajar con colecciones genéricas.
String: clase inmutable que representa cadenas de texto. Ofrece métodos como length(), substring(), contains(), toUpperCase(), etc. Al ser inmutable, cada modificación genera un nuevo objeto.
StringBuilder: clase mutable para construir y manipular cadenas de forma eficiente, evitando la creación de objetos intermedios. Indicada cuando se realizan muchas concatenaciones.
Math: clase utilitaria con métodos matemáticos estáticos: Math.abs(), Math.pow(), Math.sqrt(), Math.random(), Math.max(), etc.
ArrayList: implementación de lista dinámica basada en un array redimensionable. Permite acceso por índice en O(1) y es la estructura de lista más habitual cuando el tamaño varía en tiempo de ejecución (List<String> lista = new ArrayList<>()).
HashMap: estructura que almacena pares clave-valor con acceso en O(1) promedio mediante una función hash. Las claves son únicas; los valores pueden repetirse (Map<String, Integer> mapa = new HashMap<>()).