C ONC EPTOS AVANZADOS
Lenguaje Java
Constructor
Método que se invoca automáticamente cuando se
crea un objeto para inicializar los datos de éste
(atributos).
Dicho método tiene el mismo nombre de la clase y
sintaxis es similar a la de un método pero no
tienen tipos de retorno.
Un constructor se emplea para dar valores
iniciales a las variables de instancia de la clase o
ejecutar procedimientos de inicio.
Constructor
Cuando una clase sólo tiene el constructor
predeterminado, sus variables de instancia se
inicializan con sus valores predeterminados (char,
byte, long, float y double con 0; boolean con false
y variables de tipo por referencia en Null). Cuándo
el compilador proporciona un constructor
predeterminado o por defecto?.
Todas las clases poseen constructores sean
definidos o no.
Ejemplo de Constructor sin parámetros
Clase DemoConstructor {
private int x;
public DemoConstructor() {
x=5;
}
………
}
public static void main(String args[]) {
DemoConstructor t1 = new DemoConstructor();
}
Constructor: con y sin parámetros
This
Definida implícitamente en el cuerpo de los
métodos.
Hace alusión al objeto sobre el que se invoca el
método, es decir, el this es utilizado para hacer
referencia al objeto de la clase actual. Se puede
usar this para referenciar a los miembros de la
clase como métodos, constructores y variables.
Ejemplo de uso de this
This. Ejemplo.
public class EjemploThis {
// Variable de Instancia número
private int número;
public EjemploThis () {
número = 25;
}
public EjemploThis(int número){
//Se invoca el constructor sin parámetros
this();
// se asigna a la variable de instancia número el valor de la variable local número
this.número =número ;
}
public void imprimir(){
//variable local número
int número =20;
//Imprimir variable local
System .[Link]("Variable local número = " +número);
//Imprimir variable de instancia
System .[Link]("Variable de instancia número = "+this.número);
}
}
Sobrecarga
Capacidad para declarar métodos con el mismo
nombre en la misma clase, siempre y cuando se
tenga distintos conjuntos de parámetros
(determinados en base al número, tipos y orden de
los parámetros).
La sobrecarga de métodos se utiliza para crear
varios métodos con el mismo nombre que realicen
la misma tarea o tareas muy similares, pero con
distintos tipos o número de parámetros.
Ejemplo de Sobrecarga
Sobrecarga. Caso para analizar
Hay sobrecarga?
Caso 1
Caso 2
Sobrecarga: Constructores
Una clase puede tener varios constructores
sobrecargados que permitan a los objetos de
la clase inicializarse de distintas formas.
Herencia
Proceso en el cual una Clase (denominada
Subclase) adquiere los atributos y métodos de su
clase Padre (denominada Superclase o Clase
Base).
La idea es reutilizar el código y mejorar las
subclases con nuevas capacidades o modificaciones
de las capacidades ya existentes.
Cabe destacar que los constructores no se
heredan.
Herencia. Tipos.
La herencia directa es cuando una subclase
hereda de forma explícita en línea directa de su
clase padre o superclase.
Una superclase indirecta es cualquier clase por
encima de la superclase directa en la jerarquía de
clases, la cual define las relaciones de herencia
entre las clases.
Los métodos de la subclase pueden acceder a los
atributos y métodos protected de la superclase.
Herencia. Ejemplos
Superclase Subclases
Estudiante Estudiante Cursante,
Estudiante Graduado
Figura Triángulo, Cuadrado,
Geométrica Rectángulo
Empleado Docente, Administrativo
Cuenta Cuenta de Ahorros, Cuenta
Bancaria Corriente
Herencia. Palabra Clave Extends.
En Java, la palabra Extends se emplea para
heredar las características de una clase. En
forma general se representa:
Class SuperClase{
………
………
}
Class SubClase extends SuperClase {
………
………
}
Herencia. Palabra Clave Super
En Java, la palabra Super se emplea en forma
parecida a la cláusula this:
Para diferenciar los miembros (atributos,
métodos) de la superclase de los miembros de
la subclase si éstos poseen los mismos
nombres.
Para invocar el constructor de la superclase
desde la subclase.
Herencia: Sobrescritura
A pesar de que un método de superclase sea
apropiado para una subclase, a menudo esa
subclase requiere una versión personalizada del
mismo.
En dichos casos, la subclase puede redefinir o
sobrescribir el método de la superclase con una
implementación apropiada.
Un método sobrescrito se redefine con los
mismos argumentos y tipo de retorno.
Herencia: Sobrescritura->Reglas
La lista de argumentos debe ser idéntica a la
del método sobrescrito así como el tipo de
retorno.
El nivel de acceso no puede ser más restringido
que el nivel del método sobrescrito.
Los métodos de instancia sólo pueden ser
sobrescritos si son heredados por la subclase.
Los Constructores no pueden ser sobrescritos.
Herencia. Sobrescritura
En los métodos sobrescritos se ejecuta la definición
del método de la clase más específica del objeto
independientemente de cómo se ha declarado la
referencia al objeto.
Herencia. Ejemplo de código I
Superclase
Herencia. Ejemplo de código I
Subclase
Sobrescritura
Herencia. Ejemplo de código I
Main
Herencia. Ejemplo de código II
Superclase
Herencia. Ejemplo de código II
Subclase
Herencia. Ejemplo de código II
Método Sobrescrito
Herencia. Ejemplo de código II
Main
Herencia. Ejemplo de código III
Herencia. Ejemplo de código III
Conversión automática implícita: generalización
Herencia. Ejemplo de código III
Conversión explícita: especialización
Polimorfismo
Es posible utilizar el mismo nombre y la misma
firma del método para hacer que ocurran
distintas acciones dependiendo del tipo de
objeto en el que se invoca el método.
El polimorfismo es visto como la capacidad de un
objeto para tomar múltiples formas.
Polimorfismo. ejemplo
Polimorfismo. ejemplo
Polimorfismo. ejemplo
Claúsula Instance Of
Sirve para determinar si un objeto es de un tipo
determinado.
Cuando utilicemos el operador instanceof,
debemos recordar que sólo puede usarse con
variables que contengan la referencia a un
objeto.
Claúsula Instance Of. Ejemplo.
Claúsula Instance Of. Ejemplo.
Claúsula Instance Of. Ejemplo.
Claúsula Instance Of. Ejemplo.
Destrucción de objetos (Garbage Collection)
Gc libera la memoria de los objetos no
referenciados en ninguna parte.
Destrucción de objetos (Garbage Collection)
Soltar expresamente una referencia:
Packages
Conjunto de clases definidas en un directorio.
Dicho directorio se denomina Package.
Permite organizar la colección de objetos y
evitar conflictos de nombres.
Si no se define ningún package para una clase
java lo incluye en el DefaultPackage (el editor
Netbeans te recomienda no realizar esta
operación).
Packages y directorios
Nombre del package -> estructura de
directorios.
Classpath-> lista de directorios donde java
busca packages
Definición de Packages
Utilizar clases de otro Package
Utilizar clases de otro Package
Se tiene la siguiente jerarquía de clases:
Utilizar clases de otro Package
Package: verificar errores
Caso 1
Package: verificar errores
Caso 1. Posible solución
Package: verificar errores
Caso 2
Package: verificar errores
Caso 2. Posible solución