4. Clases y objetos en Java.

1. Clases y objetos en Java.

Atributos y métodos.

En la clase  se declararán los atributos y métodos de la clase:

Modificador de la clase:

Modificador de atributo:

De acceso.

Otros.

Modificador de método:

Formato de los mensajes: Llamada a los métodos

objeto.método(lista de argumentos);

En caso de sobrecarga, usaremos el nombre del método y la lista de argumentos,  para distinguir cuál es el que queremos ejecutar.

2   Paso  de parámetros a un método.

Ejemplo:

class PorValor

{

public void metodo(int i, int j)     {

i=i+2;

j=j+2;

}

}

class PruebaPorValor

{

public static void main (String args[])

{

PorValor obj = new PorValor();

int a = 15, b = 20;

System.out.println (“\n antes de la llamada: “ + a + “ “ + b);

obj.metodo(a,b);

System.out.println (“\n después de la llamada: “ + a + “ “ + b);

}

}

La salida:

antes de la llamada: 15 20

después de la llamada: 15 20

Ejemplo:

class PorReferencia

{

int a, b;

PorReferencia (int i, int j)

{

a=i;

b=j;

}

public void metodo (PorReferencia o)

{

o.a = o.a + 2;

o.b = o.b + 2;

}

class PruebaPorReferencia

{

public static void main (Strings args[])

{

PorReferencia obj = new PorReferencia (15,20);

System.out.println (“\n antes de la llamada: “ + obj.a + “ “ + obj.b);

obj.metodo(a,b);

System.out.println (“\n después de la llamada: “ + obj.a + “ “ + obj.b);

}

}

La salida:

antes de la llamada: 15 20

después de la llamada: 17 22

3.  Construcción de objetos.

Cuando se crea una clase, se está creando un nuevo tipo de datos que se utilizará para declarar  objetos de ese tipo.

La creación  de un objeto de una clase consta de dos etapas:

new.

Asigna dinamicamente (durante el tiempo de ejecución), memoria a un objeto, devolviendo una referencia al mismo. El sistema  reserva espacio para almacenar el objeto  y  devuelve una referencia al espacio de memoria reservado.

En Java todos los objetos son creados dinamicamente. Todos los objetos son creados dinamicamente.

Constructores.

Son un tipo especial de métodos que tienen el mismo nombre de la clase, pueden tener cero o más parámetros y no declaran devolver  ningún tipo de resultado, ni siquiera void. La misión de un constructor es  inicializar  los atributos.

La sintaxis del operador new es:

variable = new NombreClase(lista de argumentos..)

La creación de un objeto mediante new implica la invocación de un método constructor, encargado de realizar las funciones necesarias para que el objeto se inicialice a un estado coherente.

Java incorpora por defecto un constructor sin parámetros que no realiza ninguna operación especial:   public NombreClase ( ) { };

EJEMPLO

public class Punto

{

private int x;

private int y;

public Punto (int coordX, int coordY)

{

x = coordX;

y = coordY;

}

public Punto ()

{

x = 0;

y = 0;

}

public void mover (int incX, int incY)

{

x = x + incX;

y = y + incY;

}

public void mover (Punto p)

{

x = x + p.x;

y = y + p.y;

}

public String devolver()

{

return “(“ + x + “,” + y + “)”;

}

}

class Test

{

public static void main(String arg[])

{

Punto p1 = new Punto();

Punto p2 = new Punto(2,5);

System.out.println(“El punto p1 vale: ” + p1.devolver());

System.out.println(“El punto p2 vale: ” + p2.devolver());

p1.mover(3,7);

System.out.println(“El punto p1 vale: ” + p1.devolver());

p2.mover(p1);

System.out.println(“El punto p2 vale: ” + p2.devolver());

}

}

4.    Sobrecarga de métodos.

Java permite la sobrecarga de métodos; es decir, permite crear varios métodos de la misma clase con el mismo nombre y diferentes listas de argumentos.

Dos métodos sobrecargados se diferencian en el número de argumentos y/o en su tipo. La elección de ejecutar un método u otro dependerá de la colección de argumentos que se emplea en la llamada al método, dentro de un mensaje.

El tipo devuelto en los métodos sobrecargados también puede ser distinto.

Inicialmente, se busca un método en la clase que tenga la misma distribución de argumentos de la llamada; si no existe ninguno, se intenta lo mismo buscando argumentos  promoviéndolos al nivel superior (un char intentaría convertirse en un int, un int en un long y float en un double). Si se sigue sin encontrar ningún método,  se debe introducir un “casting” para que los argumentos coincidan con los definidos en los métodos.

Los constructores de una clase se pueden sobrecargar.

(La sobrecarga de un método es distinta que la redefinición de un método en la herencia.)

5. Recolección de basura.

Java no permite al usuario destruir objetos mediante una orden, sino que lo hace automáticamente para aquellos objetos que no son referenciados desde ninguna parte.

El encargado de esta operación es el “Recolector de Basura” (Garbage Collector (GC)), que el sistema lanza periódicamente.

6. Control de acceso.

Mediante el mecanismo de encapsulación se puede controlar el acceso a los atributos y métodos de una clase, para impedir el mal uso de los mismos. Si sólo se permite  el acceso a los datos a través de unos métodos bien definidos, impedimos que sean mal utilizados.

El modificador de acceso a un dato y a un método determina como se podrá acceder  a ese dato o a ese  método y debe aparecer en su declaración.

Modificador Elementos Mismo paquete Otras   clases Heredado
public clase o interfacemétodo, atributo
protected método, atributo No
ninguno clase o interfacemétodo, atributo No Subclases del mismo paquete
private método, atributo No No No

7. this y super.

this

Se utiliza cuando un método quiere hacer referencia al objeto que lo invocó. Se utiliza dentro de cualquier método para referirse al objeto actual.

Cada método de una clase tiene un argumento implícito, que no se muestra en la declaración del método. Este argumento se llama this y hace referencia al objeto mediante el cual se invoca al método de la clase.

Se le da el nombre de puntero this.

Cuando desde un método se hace referencia  a los atributos de la clase utilizando  su identificador, se  está accediendo a los atributos del objeto referenciado por this, de forma implícita.

Cuando se invoca un método desde otro, dentro de la clase, se invoca de forma implícita mediante el objeto this.

super.

Es un término que, empleado dentro de un objeto de une clase, permite hacer referencia a los métodos y atributos de la superclase correspondiente (en la herencia).

Puede emplearse de dos formas:

super.atributo

super.metodo()

super(lista de argumentos…)

No puede ser utilizado en métodos estáticos.

8. static.

Si se  define un atributo o método static podrá ser utilizado independientemente de cualquier objeto de la clase.

Existirá una única copia de ese atributo para todos los objetos de la clase.

Un atributo o método static puede ser utilizado por sí mismo, sin instancia de la clase específica; sin referencia a ningún objeto.

NombreClase.metodoStatic()

NombreClase.atributoStatic

El ejemplo más  habitual es el método main() que será llamado antes de que exista cualquier objeto.

Si un atributo es declarado static será compartido por todos los objetos de la clase.

Si un método es declarado static:

Puede utilizarse un bloque de inicialización static, es un bloque que sólo se ejecuta una vez, cuando se carga la clase por primera vez.

1 Comentario »

  1. alexander escribió,

    de verdad gracias aclare muchas dudas con este tutorial…


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: