Java
lenguaje de programación que se puede llevar a una maquina hipotética o virtual sin ser modificado el programa

Programación orientad
a objetos (POO)

Clase abstracta se puede implementar los métodos que nos interese.
En un interfaz no podemos implementar ningún método en la clase

objetos es un conjunto de variables y clase es un prototipo que define las variables y determinar el tipo de objeto

Campo es un elemento que contiene información relativa a la clase.
El Método es un elemento que permite la manipulación de información.
Constructor reserva memoria para los campos

Herencia es una clase a partir de otra que ya existe.
Polimorfismo es el cambio sin afectar su naturaleza

Los constructores, campos y métodos pueden modificarlos por los modificadores . Tenemos tres tipos de modificadores:
Privado: el elemento es accesible únicamente dentro de la clase en la que se
encuentra.
Protegido: el elemento es accesible desde la clase en la que se encuentra, y además
desde las subclases que hereden de dicha clase.
Público: el elemento es accesible desde cualquier clase.

Componentes de Java

Para definir una clase se utiliza la palabra reservada class, seguida del nombre de la
clase

Campos o Variables:
respectivamente, que pueden ser de tipos simples, o clases complejas de Java, que hayamos definido nosotros mismos, o bien que hayamos copiado de otro lugar.

Los métodos se definen como se hacen en C. Indicando el
tipo de datos que devuelven, el nombre del método, y luego los argumentos entre
paréntesis

Los constructores son métodos que se llaman igual que la clase y que se ejecutan con el operador "new" para reservar memoria para los objetos que se creen
de dicha clase.

Paquetes sirven para organizar de forma que cada
paquete contenga un conjunto de clases (tambien pueden haber paquetes o subpaquetes).

El enumerado se encuentra como "enum" permite definir un conjunto de posibles valores o estados que
podremos utilizar donde queramos

Tanto las clases como los campos y métodos admiten modificadores de acceso.
Además de los modificadores de acceso se
pueden utilizar también estos modificadores:
abstract
static
final
synchronized

Los importes estáticos "imports" permiten importar los elementos estáticos de una clase.
Argumentos variables permite pasar un número variable de argumentos a una función (como sucede con
funciones como printf en C)

Las anotaciones en campos, métodos, clases y otros
elementos que permitan a las herramientas de desarrollo o de despliegue leerlas y realizar ciertas tareas.

Herencia e interfaces

Para que herede una clase se utiliza al declarar la palabra "extends" tras el nombre de la clase.

El puntero "this" se utiliza cuando hay variables locales iguales a las de instancia.
El puntero "super" se usa para acceder a un elemento en la clase padre.(se pueden usar en un constructor para llamar a otros constructores)

Para declarar un
interfaz, usamos la palabra "interface" y declaramos (no implementamos) los métodos que queremos que tenga la interfaz.
Cuando heredamos una clase abstracta se hereda todo de una superclase y se deberán definir algunos parámetros que no se han declarado en dicha superclase

Clases útiles
Conjunto de clases ya implementadas (entre ellas el lenguaje de Java).

Toda clase en jaba parte de la clase "object" pero diferenciar que las variables hacen referencia hacia los objetos y los objetos son entidades manipulables

declarar la referencia del tipo adecuado

Properties
es una clase subtipo de "Hastable", que almacena una serie de propiedades asociando un valor a cada una de ellas la configuración de nuestra aplicación.

System es una clase que no se debe instanciar, todos estos métodos y campos son estáticos; podemos encontrar los objetos de entrada, salida, salida de error
estándar y el gestor de seguridad instalado.

La clase "Runtime" se encarga de hacer de
la interfaz con el entorno en el que se está ejecutando y comandos
como si nos encontráramos en la línea de comandos del sistema operativo.

La clase "Math" nos será de gran utilidad cuando necesitemos realizar operaciones
matemáticas.
otras clases son "locale" que almacena informacion y otra mas en "java.util"

Estructuras de datos

Podemos usar "Transfer Object" para encapsular datos en un objeto y
tratarlos de forma eficiente

Cuando se usa un "Transfer Object" es
bastante común que copiemos datos entre campos que tienen una correspondencia exacta.