Herramientas de usuario

Herramientas del sitio


bloque3:clasesobjetos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque3:clasesobjetos [29/01/2019 11:20] – [Variables de referencia] Fernando Valdeónbloque3:clasesobjetos [16/09/2024 20:53] (actual) – editor externo 127.0.0.1
Línea 8: Línea 8:
  
 ===== Clase ===== ===== Clase =====
-Es la parte de un programa en Java donde se definen las __propiedades__ y __operaciones__ que van a tener los ejemplares (objetos instancias) de dicha clase. Con una clase se define un nuevo tipo de datos (Scanner, String, Coche).+Es la parte de un programa en Java donde se definen las __propiedades__ y __operaciones__ que van a tener los ejemplares (objetosinstancias) de dicha clase. Con una clase se define un nuevo tipo de datos (Scanner, String, Coche).
  
-//Se puede entender que una clase son los planos o el molde, con el que se indican todas las características o forma para poder crear un objeto de esa clase//.+//Se puede entender que una clase son los planos o el molde, con el que se indican todas las características o forma para poder crear un objeto (ejemplar) de esa clase//.
  
 ==== Declaración de una clase ==== ==== Declaración de una clase ====
Línea 93: Línea 93:
    private int km;    private int km;
        
 +   //Constructor de la clase Coche
    public Coche(){    public Coche(){
-      //instrucciones+      //instrucciones que se realizan al crear un objeto Coche
    }    }
 } }
Línea 116: Línea 117:
 </code> </code>
  
 +Concluyendo, ¿qué hace el operador **new** cuando precede al constructor de una clase? Devuelve el valor de la referencia del objeto que se acaba de crear:
 +<code java>
 +// Declaro una variable de la clase Coche
 +Coche miVariable;
 +
 +// Asigno la referencia de un objeto Coche a la variable
 +miVariable = new Coche();
 +</code>
 +
 +La variable, no contiene el objeto sino la referencia (dirección) al lugar de la memoria en el que ha guardado.
 ==== Constructor no-args ==== ==== Constructor no-args ====
-Se conoce como el constructor que no recibe parámetros. Si en una clase no definimos ningún constructor, Java creará implícitamente un constructor llamado **no-args** que tiene el siguiente aspecto:+Se conoce como el constructor que no recibe parámetros. Si en una clase no definimos explícitamente un constructor, Java creará implícitamente un constructor llamado **no-args** que tiene el siguiente aspecto:
 <code java> <code java>
 public Coche(){ public Coche(){
Línea 155: Línea 166:
 </code> </code>
 ===== Variables de referencia ===== ===== Variables de referencia =====
-//Toda variable que no es de __tipo primitivo__ es una __variable de referencia__.//+//Toda variable que no es de __tipo primitivo__ es, sin lugar a dudas, una __variable de referencia__.//
  
-Las variables de referencia son todas las variables cuyo tipo de datos es una clase. No el objeto en sí, sino una referencia (//dirección//) al objeto creado en la memoria del ordenador (heap). **Este es uno de los puntos más importantes del lenguaje Java.**+Las variables de referencia son todas las variables cuyo tipo de datos es una clase. No contienen al objeto en sí, sino una referencia (//dirección//) al objeto creado en la memoria del ordenador (heap). **Este es uno de los puntos más importantes del lenguaje Java.**
  
 Para obtener la referencia de un nuevo objeto usamos su constructor: Para obtener la referencia de un nuevo objeto usamos su constructor:
Línea 168: Línea 179:
 coche1 = new Coche(); coche1 = new Coche();
  
-//Cambio el valor a su matrícula+//Cambio el valor del campo matrícula del objeto referenciado
 coche1.setMatricula("ASD-1234"); coche1.setMatricula("ASD-1234");
  
Línea 179: Línea 190:
 //Muestro la matrícula que asigné al objeto desde coche1 //Muestro la matrícula que asigné al objeto desde coche1
 System.out.println(coche2.getMatricula());  System.out.println(coche2.getMatricula()); 
- 
  
 //Asigno a coche2 otro valor con la referencia de un nuevo objeto //Asigno a coche2 otro valor con la referencia de un nuevo objeto
 coche2 = new Coche(); coche2 = new Coche();
  
-//Ahora coche2 tiene un valor distinto: almacena otra dirección+//Ahora coche2 tiene un valor distinto: almacena otra dirección  
 +// y está referenciando a un nuevo objeto
 </code> </code>
  
Línea 201: Línea 212:
 Usan al declarar los miembros de una clase (atributos, métodos, o constructores) y definen desde qué otras clases puedo acceder a sus miembros. Usan al declarar los miembros de una clase (atributos, métodos, o constructores) y definen desde qué otras clases puedo acceder a sus miembros.
  
-  * ''public'' : cualquier miembro público es accedido desde cualquier clase. +  * ''public'' : cualquier miembro público es accedido desde cualquier clase en cualquier paquete
-  * ''private'' : los miembros privados solo se pueden usar desde dentro de la clase que los declara+  * ''private'' : los miembros privados solo se pueden acceder desde dentro de la clase que los contiene
-  * ''protected'' : los miembros protegidos solo solo se pueden usar desde dentro de la propia clase o desde dentro de sus subclases (herencia de clases). +  * ''protected'' : los miembros protegidos solo se pueden usar desde dentro de la propia clase o desde dentro de sus subclases (herencia de clases). 
-  * //default// : si no se indica modificador, se pueden acceder a los miembros de la clase desde otra clase que esté en el paquete.+  * //default// : si no se indica modificador, se pueden acceder a los miembros de la clase  también desde las clases que estén en el mismo paquete. Se conoce también como //package-private//.
  
 {{:bloque3:modificadoresvisibilidad.png?600|}} {{:bloque3:modificadoresvisibilidad.png?600|}}
Línea 256: Línea 267:
 La mayoría de IDE's permiten generar getters y setters.  La mayoría de IDE's permiten generar getters y setters. 
  
-En eclipse cuando tengamos el cursos en el editor de una clase, vamos al menu ''source'' -> ''Generate Getters and Setters''.+En //Eclipse// cuando tengamos el cursor del ratón en el editor de una clase, hacemos click derecho y vamos al menu ''source'' -> ''Generate Getters and Setters''.
 ---- ----
  
Línea 332: Línea 343:
  
 Las variables miembro pueden inicializarse con valores distintos de los anteriores en su constructor. Las variables miembro pueden inicializarse con valores distintos de los anteriores en su constructor.
-Las variables locales (de ámbito local) no se inicializan automáticamente. Se les debe asignar un valor antes de ser usadas.+Las variables locales (de ámbito local) no se inicializan automáticamente. Se les debe asignar un valor antes de ser usadas. Los **atributos estáticos** solo pueden inicializarse en su declaración (no en un constructor).
  
  
Línea 348: Línea 359:
 </code> </code>
  
-Una variable solo puede contener un valor, y cuando no hay nada que guarde la referencia a un objeto, lo habré perdido para siempre.+Una variable solo puede contener un valor, y cuando no hay ninguna variable que guarde la referencia a un objeto, lo habré perdido para siempre.
  
 La liberación de memoria la realiza el recolector de basura (garbage collector), que es una función de la JVM (Java Virtual Machine). El recolector revisa toda el área de memoria del programa y determina qué objetos pueden ser borrados de la memoria __porque ya no tienen referencias activas que los apunten__. La liberación de memoria la realiza el recolector de basura (garbage collector), que es una función de la JVM (Java Virtual Machine). El recolector revisa toda el área de memoria del programa y determina qué objetos pueden ser borrados de la memoria __porque ya no tienen referencias activas que los apunten__.
bloque3/clasesobjetos.1548760805.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)