Clases y Objetos

Clases

  • La implementación de una clase Java debe ir en un fichero en formato texto con la extensión *.java y nombre idéntico a la clase implementada.
  • La declaración de una clase Java se realiza
  • mediante la keyword: class seguida de su nombre.
  • La keyword siempre va precedida por un modificador de acceso: public, protected, private o default (nada).
  • La implementación de la clase irá contenida en un bloque { } justo después de la declaración.
  • Declaración de una clase:

[crayon-6a619460bfa1c952492737/]

  • Ejemplo:

[crayon-6a619460bfa23549429745/]

Atributos y métodos

  • La implementación de una clase consiste en una serie de:
  • Declaración de un atributo:
  • Ejemplo:

[crayon-6a619460bfa25765447591/]

  • Declaración de un método:

[crayon-6a619460bfa26845863719/]

  • La implementación del método irá contenida en un bloque { } justo después de la declaración.
  • Ejemplo:

[crayon-6a619460bfa28611848138/]

  • Se permite definir un número indefinido de parámetros del mismo tipo mediante: …
  • Lo que recibimos es un array del tipo definido.
  • Ejemplo:

[crayon-6a619460bfa2a351173563/]

  • Hay que tener en cuenta que podemos recibir, cero, uno o varios valores en dicho parámetro.
  • Tiene algunas restricciones:
  • Ejemplo:

[crayon-6a619460bfa2b285545525/]

Constructores

  • Existe un tipo de método especial en Java llamado constructor.
  • Sirve para la construcción (instanciación) de objetos (instancias) a partir de esa clase.
  • En su implementación se suele dar valores a los atributos para ese objeto.
  • Su declaración es idéntica a la de los métodos convencionales con dos salvedades:
  • Declaración de un constructor:

[crayon-6a619460bfa2c994277849/]

  • Ejemplo:

[crayon-6a619460bfa2e234182249/]

  • Si nuestra clase no tiene constructores, el compilador añade por defecto uno sin parámetros.

Sobrecarga de métodos

  • Se dice que un método está sobrecargado cuando existen dos métodos con el mismo nombre y tipo de retorno pero con parámetros distintos.
  • De esta manera podemos tener en una clase varios constructores.
  • Ejemplo:

[crayon-6a619460bfa2f488777899/]

  • Se permite la sobrecarga de métodos cambiando también el tipo de retorno, pero siempre que:
  • El método que se está sobrecargando sea de una clase padre (de la que heredamos directa o indirectamente).
  • El nuevo tipo de retorno sea hijo del tipo de retorno del método original (es decir, que herede de él directa o indirectamente).
  • Por tanto, no es válido para tipos primitivos.

Convenciones en Java

  • El nombre de las clases comenzará con mayúsculas:
  • El nombre de los atributos comenzará con minúsculas:
  • El nombre de los métodos comenzará con minúsculas (a excepción de los constructores):

Objetos

  • Los objetos en Java no son mas que variables de tipo complejo, frente a las de tipo primitivo.
  • El tipo de un objeto es la clase de la que se ha instanciado.
  • La declaración de un objeto es idéntica a la declaración de una variable de tipo primitivo:
  • El valor por defecto de un objeto sin inicializar es: null
  • La inicialización de un objeto si que es algo distinta a la inicialización de las variables de tipo primitivo:
  • Es decir:

Variables primitivas vs. complejas

  • Una variable de tipo primitivo contiene el dato directamente:
  • Una variable de tipo complejo contiene una referencia (puntero) a la zona de memoria donde está el objeto:
  • Clases y Objetos

Manejo de objetos

  • El trabajo con un objeto consiste en acceder:
  • En ambos casos utilizaremos el operador . (punto).
  • Acceso a un atributo:

  • Acceso a un método (lo que en Orientación a Objetos se denominaba mensaje):
  • La posibilidad de acceso a un atributo o a un método de un objeto dependerá del modificador de acceso que exista en su definición.
  • Las llamadas a métodos se pueden encadenar:
  • Equivaldría a:

El método main

  • Existe un método especial en Java llamado main:
  • Es el método donde comienza la ejecución de un programa Java.
  • Las clases representaban entidades que participaban en la resolución de un problema. ¿En qué entidad tiene sentido incluir el método main?
  • En ninguna. Por eso crearemos siempre una clase a parte, que solo tenga el método main.

Destructores

  • Los destructores son unos métodos encargados de eliminar los objetos de memoria.
  • En Java no existe este tipo de métodos.
  • En Java lo que existe es un proceso que se ejecuta en la JVM a la vez que nuestra aplicación y que se encarga de buscar todos aquellos objetos en memoria no utilizados y limpiarlos.
  • Este proceso se llama Garbage Collector.

Garbage Collector

  • ¿Cómo sabe el Garbage Collector que un objeto ya no está siendo utilizado por la aplicación y que por tanto puede ser eliminado?
  • Porque no está referenciado por ninguna variable.
  • Existen tres motivos por los que una variable deja de referenciar a un objeto: