Vous êtes sur la page 1sur 85

J ava Mdulo 1

Introduccin y Fundamentos del


lenguaje de programacin Java
Contenido
Introduccin
Caractersticas del lenguaje.
Variables y Tipos de Datos.
Estructuras de Control
Ciclos iterativos.
Introduccin a la POO.
Introduccin
Introduccin (I)
Creado en 1991 por Sun Microsystems (James
Gosling) para dispositivos electrnicos:
calculadoras, microondas y la televisin
interactiva.
Escasa potencia de clculo
Poca memoria
Distintas CPUs
Consecuencias:
Lenguaje sencillo que genera cdigo reducido
Lenguaje que independiente de la plataforma
Introduccin (II)
Lenguaje de progamacin para
computadores/internet desde 1995.
Sun describe Java como un lenguaje simple,
orientado a Objetos, distribuido, interpretado,
robusto, seguro, de arquitectura neutral,
portable, de alto rendimiento, multihilos, y
dinmico
Ejecucin de Java como:
Aplicacin independiente
Applet (dentro del navegador al cargar la pgina Web)
Servlet (ejecutado en servidor de internet, sin interfaz
grfica).
Introduccin (III)
JDK (Java Development Kit): programas y librerias para
desarrollar, compilar y ejecutar programas Java.
Versiones:
Java 1.0: 212 clases organizadas en 8 paquetes
Java 1.1: 504 clases, 23 paquetes. Mejoras a la JVM.
Java 1.2 (Java 2): 1520 clases, 59 paquetes. Plataforma
muy madura . Apoyado por grandes empresas: IBM,
Oracle, Inprise, Hewtlett-Packard, Netscape, Sun.
Java 1.3 (Java Enterprise Edition). Java comienza a
ser una plataforma de desarrollo profesional
??? Java MicroEdition
Caractersticas de J ava
Caractersticas de J ava I
Lenguaje de fcil uso orientado a objetos
Lenguaje compilado e interpretado
Facilita un entorno interpretado:
Velocidad de desarrollo (no de ejecucin)
Portabilidad del cdigo
Ejecucin multitareas
Cambios dinmicos en tiempo de ejecucin
Seguridad del cdigo.
La mquina Virtual J ava - J VM (I)
Es una mquina hipottica que emula por software una
mquina real. Es definida por una especificacin.
Conjunto de instrucciones de mquina
(C.O.) + Operandos
Pila
Memoria
...
El compilador genera bytecodes (instrucciones de cdigo
maquina para la JVM)
El interprete tarduce y ejecuta los bytecodes para cada
mquina especfica.
La mquina Virtual J ava (II)
Cdigo fuente
Compilador Java
Byte-codes
Win32 JVM
Cdigo mquina
Win32
Macintosh JVM UNIX JVM
Cdigo mquina
Macintosh
Cdigo mquina
UNIX
Compilador e intrprete de
J ava (I)
El compilador analiza la sintaxis del cdigo fuente (con
extensin .java). Si no hay errores, genera bytecodes
> javac <Nombre>.java

El intrprete es la Mquina Virtual de Java que ejecuta
los bytecodes (*.class) creados por el compilador.
> java <Nombre> (sin extensin)
> java <Nombre> arg1 arg2
Compilador e intrprete de J ava (II)

HelloWorld.java


javac HelloWorld.java


java HelloWorld

HelloWorld.class

compilar
ejcutar
bytecode
Codigo fuente
Garbage Collection
La memoria reservada dinmicamente que No se vaya a
usar ms debe ser liberada.
En otros lenguajes, esta liberacin debe realizarla el propio
programador.
La JVM dispone de un proceso que rastrea las operaciones
de memoria: el Garbage Collector.
Verifica y libera la memoria que no se necesita
Se ejecuta automticamente
Puede variar segn la implementacin de la JVM.
Seguridad del Cdigo
La JVM verifica los bytecodes asegurando que:
El cdigo se ajusta a las especificaciones de la JVM.
No hay violaciones de acceso restringido.
Los tipos de los parmetros son correctos para todo el
cdigo.
No existen conversiones ilegales de datos (ej. de
enteros a apuntadores).
Formato de los archivos fuente
Declaracin de paquete (opcional)
package <nombrePaquete>
Instrucciones de importacin(opcional)
import <nombrePaquetes>
Declaracin de clase o interfaz
[<mod>] class <NombreClase> {.....}
Un programa Simple
public class ProgramaSimple
{
public static void main(String[] args)
{
System.out.println("Este es + un programa simple");
System.exit(0);
}
}
Elementos del Lenguaje
Elementos del lenguaje
Caracteristicas del lenguaje
Declaraciones
Tipos de Datos
Operadores
Estructuras de control
Clases y Objetos
Paquetes
Caracteristicas del lenguaje
Sensible a maysculas/misnsculas
Comentarios
Lenguaje de formato libre
Identificadores
Palabras reservadas
Variables y constantes
Convenciones de nomenclatura
Tiene reglas sobre los tipos de datos
Sensible a
maysculas/minsculas
Se distingue entre maysculas y
minsculas.
Los identificadores Papa, papa y PAPA
son diferentes.
Todas las palabras reservadas del lenguaje
van en minsculas.

Comentarios
// comentario
Los caracteres desde // hasta el final de la lnea son
ignorados.
/* comentario */
Los caracteres entre /* y */ son ignorados
/** comentario */
Los caracteres entre /** y */son ignorados y se
incluyen en la generacin autmatica de la
documentacin.

Lenguaje de formato libre
La disposicin de los elementos dentro del cdigo es libre
Instrucciones: lnea simple de cdigo terminada en ;
Bloque de cdigo: Conjunto de sentencias agrupadas entre
llaves.
{
X = x + 1;
Y = y + 1;
}
Java permite espacios en blanco entre elementos del cdigo
X1 = y * delta;
X2 = (y-1) * delta;
Palabras Reservadas
Palabras con un significado especial para el compilador
Ejemplos:
Nombres de tipos bsicos: boolean, char, double, int,
Indicadores de controls: do, if, else, for, while,
Class, interface, extends, implements
package, import
this, super
Modificadores de acceso: public, private, protected
Constantes: true, false, null
Etc
Variables y Constantes
Variable: Zona de memoria cuyos valores van a
cambiar durante la ejecucuin.
Declaracin:
<tipo> <variable>;
<tipo> <var1>, <var2>, ..., <varn>;
<tipo> <var1> = <valor>;
Variables y Constantes
Ejemplos de declaracin de variables:
int x,y,z;
int x = 9;
boolean terminar = false;
Cliente c1 = new Cliente();
Constantes: Zona de memoria cuyos valores no
cambian
Declaracin:
final <tipo> <variable> = <valor>;
Ejemplo: final double PI = 3.14159;
Asignaciones
Se utiliza el operador de asignacin =
<tipo> <variable> = <valor>;
<tipo> <variable>;
<otras instrucciones>...
<variable> = <valor>;
La parte izquierda siempre debe ser una variable
La parte derecha puede ser un literal, una
variable, una expresin, una funcin o una
combinacin de todos.
int x = 4; //Declaracion con asignacin
x = 9; //Se asume que x est definida
Tipos de Datos y Operadores
Tipos de Datos
Java define dos tipos de datos
Tipos primitivos
Tipos referencia
Los tipos primitivos son ocho agrupados en
cuatro categoras:
Lgico: boolean
Texto: char
Entero:byte, short, int, long
Real: float, double
Los tipos referencia son apuntadores a objetos.
Tipos de Datos
Tipos primitivos:
boolean true o false
char unicode! (16 bits)
byte entero de 8 bits con signo.
short entero de 16 bits con signo.
int entero de 32 bits con signo.
long entero de 64 bits con signo.
float,double IEEE 754 floating point
Tipos de datos Referencia
Un tipo referencia guarda un apuntador a la direccin
donde se ubica el objeto (32 bits).
Slo puede almacenar objetos de su propio tipo.
Ejemplo:
Cuadrado cuad1, cuad2;
Circulo circ1;
cuad1 = new Cuadrado();
circ1 = cuad1; // Error de compliacin
cuad2 = cuad1; // Ok
Todas las clases son de tipo referencia.
El valor que toma por defecto una variable de tipo
referencia es null.
Cadenas de Caracteres
La clase String permite manejar cadenas de caracteres.
El literal string debe ir entre comillas dobles .
Se puede crear una cadena de caracteres de dos formas:
String nombre = new String(Pepe);
String nombre = Pepe;
Para concatenar dos cadenas se usa el operador +.
No se guarda el carcter fin de cadena.
Conversiones de tipos
La conversin de tipos (casting) debe realizarse entre
tipos de la misma naturaleza: numricos o referencia.
Al convertir un tipo a un tamao ms pequeo se puede
perder la informacin del los bits de mayor peso.
No hay conversin automatica con el tipo boolean!
La sintaxis es: (<tipo>) <expresion>
Ejemplo: int i = (int) 1.345;
Operadores (I)
Unarios: +. -
Aritmticos: +, -, *, /, % (resto de la divisin).
De Asignacin: =, +=, -=, *=, %=
<var> += <exp> <var> = <var> + <exp>
Operadores incrementales: ++, --
Precediendo a la variable: ++<var>, --<var>
siguiendo la variable: <var>++, <var>--
elacionales: ==. !=, <, >, <=, >=,
Operadores (II)
Operadores relacionales: == (igual). != (distinto), <, >,
<=, >=,
Operadores booleanos: && (AND), || (OR), ! (NOT), &
(AND), | (OR).
&& y || realizan evaluacin perezosa
& y | siempre evalan los dos operadores
El operador instanceof: <objeto> instanceof
<clase> determina si un objeto pertenece a una clase.
Operadores (III)
Operador condicional: ?
<expBooleana> ? <valor1> : <valor2>
permite bifurcaciones condicionales sencillas.
Operadores a nivel de Bits: &, |, ^, ~, <<, >>, >>>
op1 >> n, desplaza los bits de op1 (con signo) a la derecha n
posiciones.
op1 >>> n, desplaza los bits de op1 (sin signo) a la derecha n
posiciones.
op1 ^ op2, O exclusivo.
~op1 , NOT a nivel de bit (complemento).
Precedencia de operadores
Los operadores binarios se evalan de izaquierda a derecha,
excepto los operadores de asignacin.
1. Sufijos: . [] ()
2. Unarios: ++ -- ! ~
3. Creacion y casting: new (tipo)exp
4. Multiplicativos: * / %
5. Aditivos: + -
6. Desplazamientos: << >> >>>
7. Relacionales: < > <= >= == !=
8. Bits: & ^ |
9. Lgicos: && ||
10. Condicional: ? :
11. Asignacin: = op= (*= /= %= += - etc.)
Estructuras de control
Estructuras de Control
Las estructuras de control del flujo de ejecucin
permiten tomar decisiones y realizar un bloque de
instrucciones repetidas veces.
Hay 2 tipos principales:
Condicionales: if , switch
Lazos: for, while, do while
Otras instrucciones que permiten interrumpir el flujo
normal de ejecucin son break y continue.
La instruccin if
Ejecuta un conjunto de instrucciones en funcin de la
expresin de comparacin (booleana)
if (<exprBooleana>) <instruccion1>;
[else <instruccin2>];
if ( exprBooleana ) <bloque1>;
[else <bloque2>];
Ejemplo: if (a>b) x = a;
else x = b;
El else es opcional
if ( x[i] > max ) max = x[i];
La instruccin switch
Comparacin de igualdad mltiple con la misma
variable.
switch(<variable>) {
case literal1:[<cjtoInstrucc1>;]
[break;]
case literal2:[<cjtoInstrucc2>;]
[break;]

case literaln:[<cjtoInstruccn>;]
[break;]
[default: <cjtoInstrucc>;]
}
Ejemplo switch
switch(opcion) {
case 1:AbrirArchivo();
break;
case 2:ImprimirArchivo();
break;
case 3:ImprimirDatos();
break;
case 4:CerrarArchivo();
break;
case 5:
default: terminarPrograma();
}
El lazo for
Permite la ejecucin repetida de un grupo de
instrucciones con mayor control
for ( <inicializacin>;
<expBooleana>; <actualizacin> )
{ <grupo de instrucciones> ; }
<inicializacin>, asignacin de valores iniciales de
las variables que intervienen en la expresin
<expBooleana>, condicin boolena
<actualizacin>, asignacin de un nuevo valor de las
variables de <inicializacin>
El lazo While
El grupo de instrucciones se ejecuta
mientras se cumpla la expresin booleana.
while ( expBooleana )
{
<grupoInstrucciones> ;
}
Equivalencia for-while
for ( <inicializacin>; <expBooleana>; <actualizacin> )
{
<grupo de instrucciones> ;
}

Equivale a:
<inicializacin>
while ( expBooleana )
{
<grupoInstrucciones> ;
<actualizacin>;
}
Ejemplo
for( k=0; k<n; k++ ) { <s>; }
K=0
while ( k<n )
{
<s> ;
k++;
}

Realizan el las instrucciones en la secuencia de
instrucciones s, n veces.
El lazo Do-While
El conjunto de instrucciones se ejecuta mientras se
cumpla la expresin booleana
do
{
<grupoInstrucciones> ;
}
while ( expBooleana )

El conjunto de instrucciones se ejecuta al menos 1 vez.
Las instrucciones break y
continue.
La instruccin break causa la terminacin
inmediata de un lazo o instruccin switch (sin
ejecutar el resto de las instrucciones).
Vlido para for, while, do while y switch
La sentencia continue causa la terminacin
inmediata de una iteracin de un ciclo.
Vlido para for, while y do while
Programacin Orientada a
Objetos
Paradigmas de programacin
Paradigma estructurado o procedural: Los programas se dividen
en procedimientos independientes con acceso total a los datos
comunes.
Algortimos + Estructuras de Datos = Programas
Paradigma orientado a objetos: Los datos se consideran la parte
ms importante del programa. Los objetos modelan las
caractersticas de los problemas del mundo real, su
comportamiento ante estas caracteristicas y su forma de interactuar
con otros elementos
Objetos + mensajes = Programas
Ejemplo: Tomarse un caf en
la panadera
Procedural:
El cliente entra el la
panadera
El cliente pasa detrs
de la barra
El cliente prepara la
cafetera
El cliente se sirve el
caf
El cliente se bebe el
caf.
OO:
El cliente entra en la
panadera
El cliente pide un caf
al cafetero
El cafetero prepara
el caf.
El cafetero sirve el
caf al cliente.
El cliente se bebe el
caf.
Conceptos de la Orientacin a
Objetos
Clases: Patrones que indican como construir objetos
Objetos: Instancias de las clases en tiempo de
ejecucin.
Miembros de la clase:
Atributos: Caractersticas o propiedades de los objetos
(o clases). Pueden ser variables de tipos simples o
referencias a otros objetos
Mtodos: Comportamientos de los objetos. Son
funciones que operan sobre los atributos de los objetos.
Caractersticas de la OO
Cada objeto tiene caractersticas reconocibles.
Ejemplo: un empleado tiene Nombre, CI, sueldo,
Cada objeto es nico. Ejemplo: el empleado1 es Juan
Prez, con CI 1.456.786 gana 890.000 Bs.
Los objetos almacenan informacin (sus
caractersticas)
Los objetos realizan operaciones sobre sus atributos.
Definicin de Clase
Sintaxis
Class <NombreClase> {
// Declaracion de atributos
<tipo> <var>;
// Declaracin de mtodos
<tipo> <nombreMetodo> ( <argumentos> )
{ }
}
El nombre del archivo debe coincidir con el de la
clase definida en l.
Se recomienda definir una clase por cada archivo
Java.
Ejemplo de Clase
public class Circulo {
// Atributos
double radio;
String color;
// Metodos
void asigRadio( ){ }
double area( ){}
}
Creacin de un objeto
Se usa la palabra reservada new
<refObjeto> = new <NombreClase>();

Ejemplo:
Circulo miCirculo;
miCirculo = new Circulo();
Acceso a los miembros de un
Objeto
A travs del operador punto (.) se puede acceder tanto
a los atributos como a los mtodos.
<refObjeto>.<atributo>
<refObjeto>.<metodo>()
Ejemplo:
Circulo miCirculo = new Circulo();
miCirculo.radio = 10;
miCirculo.color = azul;
miCirculo.area();
Mtodos
Son el equivalente a los procedimientos de los lenguajes no
OO. Un mtodo es un bloque de cdigo definido dentro de
una clase que proporciona un mecanismo para realizar una
accin.
Un mtodo tiene acceso a todos los atributos de su clase.
Un mtodo puede invocar otros mtodos
En Java no se puede definir un mtodo dentro de otro.
La ejecucin de todos los programas se inicia en el mtodo
main.
Definicin de mtodos (I)
Sintaxis para la definicin de un mtodo:
<tipoRetorno> <nombreMetodo>(< parametros >...)
{ <instrucciones>...}

La declaracin de un mtodo tiene cuatro partes bsicas:
El tipo del valor de retorno del mtodo (tipo). Si no devuelve
ningun valor debe ser void.
El nombre del mtodo (nombreMetodo)
Una lista de parmetros (parametros). Casa parmetro tiene la
forma <tipo> <argumento>. Se separan con comas.
El cuerpo del mtodo (instrucciones).
Definicin de mtodos (II)
<instrucciones>, Conjunto de instrucciones que
implementan la tarea que debe realizar el mtodo.
Si devuelve un valor debe finalizar con la sentencia
return
return <valor>;
<valor> Debe ser del mismo <tipoRet> con que se ha
declarado el mtodo.
El cdigo se ejecuta hasta alcanzar la instruccin return (si
devuelve un valor) o hasta el final del mtodo.
Se pueden declarar variables locales si son necesarias.
Ejemplos de Mtodos
double obtRadio( ){
return radio;
}
void asigRadio(int nuevoRadio){
radio = nuevoRadio;
}
public double Area( ) {
return radio*radio*Math.PI;
}
public class Circulo
{
// Atributos
double radio;
String color;
// Metodos
void asigRadio(
){ }
double area( ){}
}
Parametros
Las variables en la lista de parmetros se separan con
comas.
Los parametros de la lista en la especificacin del
mtodo, son llamados parmetros formales.
Cuando un mtodo es llamado, estos parmetros
formales son reemplazados por los parmetros
actuales.
Los parmetros actuales deben ser equivalentes en
tipo, orden y nmero a los parametros formales.
char calc (int num1, int num2, String mensaje)
{
int sum = num1 + num2;
char result = mensaje.charAt (sum);

return result;
}
num = 3
ch = obj.calc (2, num, Hola Mundo");
Parmetros - Ejemplo
Paso de parametros por valor
Cuando es invocado un mtodo con un
parmetro de tipo primitivo, tal como int, el
valor del parmetro actual es pasado al mtodo.
El valor actual de la variable fuera del mtodo
no es afectado, independientemente de los
cambios hechos al parmetro formal dentro del
mtodo.
Parametros por valor - Ejemplo
class PruebaPasoPorValor {
public static void main(String[] args) {
int times = 3;
System.out.println(Antes del llamado, la variable
times es+times);
nPrintln(Bienvenido a Java!,times);
System.out.println(Despues del llamado, la variable
times es + times);
}
static void nPrintln(String mensaje, int n) {
while (n > 0) {
System.out.println(n = +n);
System.out.println(mensaje);
n--;
}
}
}
Paso de parametros por
referencia
Se pueden pasar objetos a mtodos como
parmetros actuales
Cuando se pasa un objeto al mtodo la referencia
del objeto es pasado al parmetro formal
Cualquier cambio al objeto local que ocurra
dentro del mtodo afectar al objeto original que
fue pasado como argumento.
Parametros por referencia -Ejemplo
class PruebaPasoPorReferencia {
public static void main(String[] args){
Circulo miCirculo;
miCirculo = new Circulo(5.0, "blanco");
imprimeCirculo(miCirculo);
colorCirculo(miCirculo, "negro");
imprimeCirculo(miCirculo);
}
public static void colorCirculo( Circulo c, String color)
{
c.color = color;
}
public static void imprimeCirculo(Circulo c) {
System.out.println("El rea del circulo de radio " +
c.getRadio( ) + " es " +c.Area());
System.out.println("El color del Circulo es " +c.color);
}
}
Parametros por referencia Ejemplo (cont.)
class Circulo {
private double radio;
String color;

public Circulo(double r, String c){
radio = r;
color = c;
}
public double getRadio( ){
return radio;
}
public double Area( ){
return radio*radio*Math.PI;
}
}
Alcance de las variables (I)
En java se dispone de tres tipos de variables:
Las variables miembro pertenecientes a una clase.
Argumentos de un mtodo de la clase.
Variables locales de un mtodo de la clase.
Los argumentos trabajan como variables locales.
class Ejemplo {
int x; // variable miembro
metodo (int y){ // argumento
int z; // variable local
x = y + z;
}
}
Alcance de las variables (II)
Las variables miembros son visibles desde
cualquier parte de la clase.
Los argumentos y variables locales solo son
visibles dentro del mtodo al que pertenece, dejan
de existir al finalizar el mtodo.
Dentro de un mtodo, si coincide el identificador
de un argumento o variable local con el de una
variable miembro, slo se accede a la variable del
mtodo.
Ejemplo
class A {
int x;
void metodo (int y){
int x=2;
y = 3*x + y - x;
println(y);
}
}

main
{
int arg = 4;
A obj = new A();
obj.x = 1;
obj.metodo(arg);
println(arg);
println(obj.x);
}


La referencia this
Se emplea para referirse al objeto actual
dentro de un mtodo.
Con this se hace accesible una variable
miembro cuyo identificador coincide con una
variable local.
Constructores (I)
Un constructor es un tipo especial de mtodo que
permite construir un objeto de una clase.
Ejemplo:
class Circulo {
public Circulo(){}
public Circulo(double r){}
public Circulo(double r, String c){}

}
Se utilizan junto con la palabra reservada new
Circulo c1 = new Circulo(27);
Constructores (II)
Los constructores se pueden sobrecargar y
son opcionales
Si no se define ningn constructor, Java
proporciona uno por defecto.
Si se define un constructor con argumentos
se pierde el constructor por defecto
Normalmente en el constructor se
inicializan las variables miembro.
Destructores
En Java no hay destructores como en C++

El garbage collector es el encargado de liberar la
memoria.
Cuando se detecta objetos no referenciados
Al final de un bloque que haya utilizado objetos.
Caractersticas de la POO
Ms conceptos de OO
Encapsulamiento: Permite la proteccin de
ciertas partes de un objeto del acceso desde
otros objetos externos
Herencia: Jerarqua de clases basada en la
agrupacin de atributos o mtodos comunes
Polimorfismo: Tratamiento generalizado a
todas las clases pertenecientes a una jerarqua
de herencia.
Encapsulamiento
El encapsulamiento consiste en la agrupacin de
datos y su tratamiento en una misma estructura.
Permite la proteccdin de la manipulacin externa
de algunas partes de los objetos.
Un objeto suele tener datos y mtodos privados,
de acceso restringido.
Fuerza al usuario a usar una interfaz para acceder
a los datos.
Hace que el cdigo sea ms fcil de mantener
Modificadores para restringir
el acceso (I)
La definicin de los miembros de una clase se
puede ampliar aadiendo modificadores al
principio.:
[modificador]<tipo> <identificador>;
[modificador]<tipo> <nombre>(<args>)
{...}
Los modificadores permiten acceder a los
datos o mtodos de manera restringida
Modificadores para restringir
el acceso (II)
public. El miembro de la clase es accesible desde
cualquier parte del cdigo.
private. El miembro de la clase slo es accesible
desde cdigo perteneciente a la propia clase.
protected(o friendly). Slo las subclases de la
clase y nadie ms pueden acceder a las variables y
mtodos.
Herencia (I)
Jerarquia de clases basada en agrupar atributos
y/o mtodos comunes
Las clases descendientes se llaman subclases.
Las clases ascendientes se llaman superclases.
Las subclases heredan caractersticas y mtodos
de las superclases (excepto los constructores)
Herencia (II)
Supongamos que tenemos la clase Jefe y la clase
Secretaria definidas como:
Jefe {<int><numEmpleado>, <String><nombre>,
<int><numDepart>, <int><numSupervisados>}
Secretaria {<int><numEmpleado>, <String><nombre>,
<int><numDepart>, <Jefe><trabajaPara>}
Las partes comunes se pueden agrupar en una
misma clase, manteniendo las otras dos con las
partes no comunes y heredando de esta nueva clase
con la palabra reservada extends.
Ejemplo herencia
public class Articulo { // clase padre
public float precio=0;
...
public void setPrecio(float elPrecio) {
precio = elPrecio;
}
...
public float getPrecio() {
return precio;
}
}

//los mtodos y atributos de Articulo son heredados a Pelicula

public class Pelicula extends Articulo {// clase hijo

public void setDescripcion(String descrip) {
descripcion = descrip;
}
...
public String getDescripcion() {
return descripcion;
}
}
Relacin de Contenido
Una clase puede tener referencias a objetos de
otras clases.
Se diferencia de la herencia en que es necesario
instanciarlos por separado.
Responde afirmativamente a la pregunta:
<contenedor> tiene un <contenido>?
Mtodos virtuales
Una subclase puede modificar los mtodos
que ha heredado de las superclase,
manteniendo los mismos nombres, tipos de
retorno y listas de argumentos.

class Empleado {
int calcularVacaciones() {...}
}
class Jefe extends Empleado {
int numSupervisados,
int calcularVacaciones() {...}
}
Polimorfismo
Un mtodo con el mismo nombre, tipo de retorno
y lista de parmetros puede ser aplicado a objetos
de diferentes clases.
Uso, trabajar con la clase ms general:
Parmetros polimrficos
Colecciones heterogneas

Empleado e1 = new Empleado();
Empleado e2 = new Jefe();
Empleado e1 = new Secretaria();

e2.numSupervisados = 15; // ERROR
((Jefe)e2).numSupervisados = 15;

Vous aimerez peut-être aussi