CONCEPTOS Y DEFINICIONES EN JAVA

 CONCEPTOS Y DEFINICIONES EN JAVA

 

 

CLASES

Una clase es una agrupación de datos y de código que actua sobre esos datos, a la que se le da un nombre. 

Una clase contiene:

La sintaxis general para la declaración de una clase es:

modificadores class nombre_clase {
       declaraciones_de_miembros ;
}

Por ejemplo:

class Punto {
     int x;
     int y;
}

 

TIPOS DE  CLASES

Hasta ahora sólo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:

abstract

Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.

final

Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.

public

Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.

synchronizable

Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.

 

OBJETO

Cuando se crea un objeto (se instancia una clase) es posible definir un proceso de inicialización que prepare el objeto para ser usado. Esta inicialización se lleva a cabo invocando un método especial denominado constructor. Esta invocación es implícita y se realiza automáticamente cuando se utiliza el operador new. Los constructores tienen algunas características especiales:

El constructor no es un miembro más de una clase. Sólo es invocado cuando se crea el objeto (con el operador new). No puede invocarse explicitamente en ningún otro momento.

Continuando con los ejemplos del capítulo anterior se podría escribir un constructor para la clase Punto, de la siguiente forma:

class Punto {
    int x , y ;
    Punto ( int a , int b ) {
        x = a ; y = b ;
    }
}

Con este constructor se crearía un objeto de la clase Punto de la siguiente forma:

Punto p = new Punto ( 1 , 2 );

 

CONSTRUCTORES

Todas las clases Java tienen métodos especiales llamados Constructores que se utilizan para inicializar un objeto nuevo de ese tipo. Los contructores tienen el mismo nombre que la clase --el nombre del constructor de la clase Rectangle es Rectangle(), el nombre del constructor de la clase Thread es Thread(), etc...

Java soporta la sobrecarga de los nombres de métodos para que una clase puede tener cualquier número de constructores, todos los cuales tienen el mismo nombre. Al igual que otros métodos sobrecargados, los constructores se diferencian unos de otros en el número y tipo de sus argumentos.

 

Consideremos la clase Rectangle del paquete java.awt que proporciona varios constructores diferentes, todos llamados Rectangle(), pero cada uno con número o tipo diferentes de argumentos a partir de los cuales se puede crear un nuevo objeto Rectangle. Aquí tiene las firmas de los constructores de la clase java.awt.Rectangle:

 

public Rectangle()

public Rectangle(int width, int height)

public Rectangle(int x, int y, int width, int height)

public Rectangle(Dimension size)

public Rectangle(Point location)

public Rectangle(Point location, Dimension size)

 

SOBRECARGA DE MÉTODOS

Una misma clase puede tener varios métodos con el mismo nombre siempre que se diferencien en el tipo o número de los argurmentos. Cuando esto sucede se dice que el método está sobrecargado.

 Sin embargo no se puede sobrecargar cambiando sólo el tipo del valor devuelto. Por ejemplo:

int metodoSobrecargado() { . . .}
void metodoSobrecargado() { . . .}  // error en compilación

con esta definición, en la expresión y.metodoSobrecargado() la JVM no sabría que método invocar.

Se puede sobrecargar cualquier método miembro de una clase, así como el constructor. 

INTERFACE

Un interface es una colección de declaraciones de métodos (sin definirlos)  y también puede incluir constantes.

Runnable es un ejemplo de interface en el cual se declara, pero no se implemementa, una función miembro run.

public interface Runnable {

public abstract void run();

}

Las clases que implementen (implements) el interface Runnable han de definir obligatoriamente la función run.

class Animacion implements Runnable{

//..

public void run(){

//define la función run

}

}

El papel del interface es el de describir algunas de las características de una clase. Por ejemplo, el hecho de que una persona sea un futbolista no define su personalidad completa, pero hace que tenga ciertas características que las distinguen de otras.

Clases que no están relacionadas pueden implementar el interface Runnable, por ejemplo, una clase que describa una animación, y también puede implementar el interface Runnable una clase que realice un cálculo intensivo.

 

POLIMORFISMO.

Es el concepto de la orientación a objetos que permite invocar a un método independientemente de la clase a la que pertenezca un objeto, que puede conocerse recién en tiempo de ejecución. Gracias al polimorfismo, el objeto es el que recoge la llamada e invoca al método correspondiente, en forma dinámica.

 El polimorfismo permite mltiples implementaciones de métodos, dependiendo del tipo de objeto que se indica al invocar el método correspondiente. De esta manera el polimorfismo permite que el mismo mensaje enviado a diferentes objetos resulte en acciones dependientes del objeto que recibe el mensaje.

 

Ejemplo:

class Perro extends Mamifero {

int numero_patas;

public void mover() {

System.out.println("Ahora es un perro el que se mueve");

}

}

public class Polimorfismo {

public static void muevete(Mamifero m) {

m.mover();

}

public static void main(String[] args) {

Gato bisho = new Gato();

Perro feo = new Perro();

muevete(bisho);

muevete(feo);

}

}

VOLVER A LA PAGINA PRINCIPAL