Title: Java
1Java Módulo 1
- Introducción y Fundamentos del lenguaje de
programación Java
2Contenido
- Introducción
- Características del lenguaje.
- Variables y Tipos de Datos.
- Estructuras de Control
- Ciclos iterativos.
- Introducción a la POO.
3Introducción
4Introducción (I)?
- Creado en 1991 por Sun Microsystems (James
Gosling) para dispositivos electrónicos
calculadoras, microondas y la televisión
interactiva. - Escasa potencia de cálculo
- Poca memoria
- Distintas CPUs
- Consecuencias
- Lenguaje sencillo que genera código reducido
- Lenguaje que independiente de la plataforma
5Introducción (II)?
- Lenguaje de progamación 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
dinámico - Ejecución de Java como
- Aplicación independiente
- Applet (dentro del navegador al cargar la página
Web)? - Servlet (ejecutado en servidor de internet, sin
interfaz gráfica).
6Introducción (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
7Características de Java
8Características de Java I
- Lenguaje de fácil uso orientado a objetos
- Lenguaje compilado e interpretado
- Facilita un entorno interpretado
- Velocidad de desarrollo (no de ejecución)?
- Portabilidad del código
- Ejecución multitareas
- Cambios dinámicos en tiempo de ejecución
- Seguridad del código.
9La máquina Virtual Java - JVM (I)?
- Es una máquina hipotética que emula por software
una máquina real. Es definida por una
especificación. - Conjunto de instrucciones de máquina
- (C.O.)
Operandos - Pila
- Memoria
- ...
- El compilador genera bytecodes (instrucciones de
código maquina para la JVM)? - El interprete tarduce y ejecuta los bytecodes
para cada máquina específica.
10(No Transcript)
11Compilador e intérprete de Java (I)?
- El compilador analiza la sintaxis del código
fuente (con extensión .java). Si no hay errores,
genera bytecodes - gt javac ltNombregt.java
- El intérprete es la Máquina Virtual de Java que
ejecuta los bytecodes (.class) creados por el
compilador. - gt java ltNombregt (sin extensión)?
- gt java ltNombregt arg1 arg2
12Compilador e intérprete de Java (II)?
Codigo fuente
compilar
javac HelloWorld.java
HelloWorld.java
java HelloWorld
HelloWorld.class
ejcutar
bytecode
13Garbage Collection
- La memoria reservada dinámicamente que No se vaya
a usar más debe ser liberada. - En otros lenguajes, esta liberación 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 automáticamente
- Puede variar según la implementación de la JVM.
14Seguridad del Código
- La JVM verifica los bytecodes asegurando que
- El código se ajusta a las especificaciones de la
JVM. - No hay violaciones de acceso restringido.
- Los tipos de los parámetros son correctos para
todo el código. - No existen conversiones ilegales de datos (ej. de
enteros a apuntadores).
15Formato de los archivos fuente
- Declaración de paquete (opcional)?
- package ltnombrePaquetegt
- Instrucciones de importación(opcional)?
- import ltnombrePaquetesgt
- Declaración de clase o interfaz
- ltmodgt class ltNombreClasegt .....
16Un programa Simple
- public class ProgramaSimple
-
- public static void main(String args)
-
- System.out.println("Este es un programa
simple") - System.exit(0)
-
17Elementos del Lenguaje
18Elementos del lenguaje
- Caracteristicas del lenguaje
- Declaraciones
- Tipos de Datos
- Operadores
- Estructuras de control
- Clases y Objetos
- Paquetes
19Caracteristicas del lenguaje
- Sensible a mayúsculas/misnúsculas
- Comentarios
- Lenguaje de formato libre
- Identificadores
- Palabras reservadas
- Variables y constantes
- Convenciones de nomenclatura
- Tiene reglas sobre los tipos de datos
20Sensible a mayúsculas/minúsculas
- Se distingue entre mayúsculas y minúsculas.
- Los identificadores Papa, papa y PAPA son
diferentes. - Todas las palabras reservadas del lenguaje van en
minúsculas.
21Comentarios
- // comentario
- Los caracteres desde // hasta el final de la
línea son ignorados. - / comentario /
- Los caracteres entre / y / son ignorados
- / comentario /
- Los caracteres entre / y /son ignorados y se
incluyen en la generación autómatica de la
documentación.
22Lenguaje de formato libre
- La disposición de los elementos dentro del código
es libre - Instrucciones línea simple de código terminada
en - Bloque de código Conjunto de sentencias
agrupadas entre llaves. -
- X x 1
- Y y 1
-
- Java permite espacios en blanco entre elementos
del código - X1 y delta
- X2 (y-1) delta
23Palabras Reservadas
- Palabras con un significado especial para el
compilador - Ejemplos
- Nombres de tipos básicos 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
24Variables y Constantes
- Variable Zona de memoria cuyos valores van a
cambiar durante la ejecucuión. - Declaración
- lttipogt ltvariablegt
- lttipogt ltvar1gt, ltvar2gt, ..., ltvarngt
- lttipogt ltvar1gt ltvalorgt
25Variables y Constantes
- Ejemplos de declaración de variables
- int x,y,z
- int x 9
- boolean terminar false
- Cliente c1 new Cliente()
- Constantes Zona de memoria cuyos valores no
cambian - Declaración
- final lttipogt ltvariablegt ltvalorgt
- Ejemplo final double PI 3.14159
26Asignaciones
- Se utiliza el operador de asignación
- lttipogt ltvariablegt ltvalorgt
- lttipogt ltvariablegtltotras instruccionesgt...ltvaria
blegt ltvalorgt - La parte izquierda siempre debe ser una variable
- La parte derecha puede ser un literal, una
variable, una expresión, una función o una
combinación de todos. - int x 4 //Declaracion con asignación
- x 9 //Se asume que x está definida
27Tipos de Datos y Operadores
28Tipos de Datos
- Java define dos tipos de datos
- Tipos primitivos
- Tipos referencia
- Los tipos primitivos son ocho agrupados en cuatro
categorías - Lógico boolean
- Texto char
- Enterobyte, short, int, long
- Real float, double
- Los tipos referencia son apuntadores a objetos.
29Tipos de Datos
No es un int
- 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
30Tipos de datos Referencia
- Un tipo referencia guarda un apuntador a la
dirección donde se ubica el objeto (32 bits). - Sólo puede almacenar objetos de su propio tipo.
- Ejemplo
- Cuadrado cuad1, cuad2
- Circulo circ1
- cuad1 new Cuadrado()
- circ1 cuad1 // Error de compliación
- cuad2 cuad1 // Ok
- Todas las clases son de tipo referencia.
- El valor que toma por defecto una variable de
tipo referencia es null.
31Cadenas 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 carácter fin de cadena.
32Conversiones de tipos
- La conversión de tipos (casting) debe realizarse
entre tipos de la misma naturaleza numéricos o
referencia. - Al convertir un tipo a un tamaño más pequeño se
puede perder la información del los bits de mayor
peso. - No hay conversión automatica con el tipo boolean!
- La sintaxis es (lttipogt) ltexpresiongt
- Ejemplo int i (int) 1.345
33Operadores (I)?
- Unarios . -
- Aritméticos , -, , /, (resto de la
división). - De Asignación , , -, ,
- ltvargt ltexpgt ó ltvargt ltvargt ltexpgt
- Operadores incrementales , --
- Precediendo a la variable ltvargt, --ltvargt
- siguiendo la variable ltvargt, ltvargt--
- elacionales . !, lt, gt, lt, gt,
34Operadores (II)?
- Operadores relacionales (igual). !
(distinto), lt, gt, lt, gt, - Operadores booleanos (AND), (OR), ! (NOT),
(AND), (OR). - y realizan evaluación perezosa
- y siempre evalúan los dos operadores
- El operador instanceof ltobjetogt instanceof
ltclasegt determina si un objeto pertenece a una
clase.
35Operadores (III)?
- Operador condicional ?
- ltexpBooleanagt ? ltvalor1gt ltvalor2gt
- permite bifurcaciones condicionales sencillas.
- Operadores a nivel de Bits , , , , ltlt, gtgt,
gtgtgt - op1 gtgt n, desplaza los bits de op1 (con signo) a
la derecha n posiciones. - op1 gtgtgt n, desplaza los bits de op1 (sin signo)
a la derecha n posiciones. - op1 op2, O exclusivo.
- op1 , NOT a nivel de bit (complemento).
36Precedencia de operadores
- Los operadores binarios se evalúan de izaquierda
a derecha, excepto los operadores de asignación. - Sufijos . ()
- Unarios -- !
- Creacion y casting new (tipo)exp
- Multiplicativos /
- Aditivos -
- Desplazamientos ltlt gtgt gtgtgt
- Relacionales lt gt lt gt !
- Bits
- Lógicos
- Condicional ?
- Asignación op ( / - etc.)?
37Estructuras de control
38Estructuras de Control
- Las estructuras de control del flujo de ejecución
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 ejecución son break y continue.
39La instrucción if
- Ejecuta un conjunto de instrucciones en función
de la expresión de comparación (booleana)? - if (ltexprBooleanagt) ltinstruccion1gtelse
ltinstrucción2gt - if ( exprBooleana ) ltbloque1gtelse ltbloque2gt
- Ejemplo if (agtb) x a else x b
- El else es opcional if ( xi gt max ) max
xi
40La instrucción switch
- Comparación de igualdad múltiple con la misma
variable. - switch(ltvariablegt) case literal1ltcjtoInstruc
c1gt - break
- case literal2ltcjtoInstrucc2gt
- break
-
- case literalnltcjtoInstruccngt
- break
- default ltcjtoInstruccgt
41Ejemplo switch
- switch(opcion) case 1AbrirArchivo()
- break
- case 2ImprimirArchivo()
- break
- case 3ImprimirDatos()
- break
- case 4CerrarArchivo()
- break
- case 5
- default terminarPrograma()
42El lazo for
- Permite la ejecución repetida de un grupo de
instrucciones con mayor control - for ( ltinicializacióngt ltexpBooleanagt
ltactualizacióngt ) - ltgrupo de instruccionesgt
- ltinicializacióngt, asignación de valores iniciales
de las variables que intervienen en la expresión - ltexpBooleanagt, condición boolena
- ltactualizacióngt, asignación de un nuevo valor de
las variables de ltinicializacióngt
43El lazo While
- El grupo de instrucciones se ejecuta mientras se
cumpla la expresión booleana. - while ( expBooleana )
-
- ltgrupoInstruccionesgt
-
44Equivalencia for-while
- for ( ltinicializacióngt ltexpBooleanagt
ltactualizacióngt ) -
- ltgrupo de instruccionesgt
-
- Equivale a
- ltinicializacióngt
- while ( expBooleana )
-
- ltgrupoInstruccionesgt
- ltactualizacióngt
-
45Ejemplo
- for( k0 kltn k ) ltsgt
- K0
- while ( kltn )
-
- ltsgt
- k
-
- Realizan el las instrucciones en la secuencia de
instrucciones s, n veces.
46El lazo Do-While
- El conjunto de instrucciones se ejecuta mientras
se cumpla la expresión booleana - do
-
- ltgrupoInstruccionesgt
-
- while ( expBooleana )?
- El conjunto de instrucciones se ejecuta al menos
1 vez.
47Las instrucciones break y continue.
- La instrucción break causa la terminación
inmediata de un lazo o instrucción switch (sin
ejecutar el resto de las instrucciones). - Válido para for, while, do while y switch
- La sentencia continue causa la terminación
inmediata de una iteración de un ciclo. - Válido para for, while y do while
48Programación Orientada a Objetos
49Paradigmas de programación
- 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 más importante del programa.
Los objetos modelan las características de los
problemas del mundo real, su comportamiento ante
estas caracteristicas y su forma de interactuar
con otros elementos - Objetos mensajes Programas
50Ejemplo Tomarse un café en la panadería
- Procedural
- El cliente entra el la panadería
- El cliente pasa detrás 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 panadería
- 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é.
51Conceptos de la Orientación a Objetos
- Clases Patrones que indican como construir
objetos - Objetos Instancias de las clases en tiempo de
ejecución. - Miembros de la clase
- Atributos Características o propiedades de los
objetos (o clases). Pueden ser variables de tipos
simples o referencias a otros objetos - Métodos Comportamientos de los objetos. Son
funciones que operan sobre los atributos de los
objetos.
52Características de la OO
- Cada objeto tiene características reconocibles.
Ejemplo un empleado tiene Nombre, CI, sueldo, - Cada objeto es único. Ejemplo el empleado1 es
Juan Pérez, con CI 1.456.786 gana 890.000 Bs. - Los objetos almacenan información (sus
características)? - Los objetos realizan operaciones sobre sus
atributos.
53Definición de Clase
- Sintaxis
- Class ltNombreClasegt
- // Declaracion de atributos
- lttipogt ltvargt
- // Declaración de métodos
- lttipogt ltnombreMetodogt ( ltargumentosgt )?
-
-
- El nombre del archivo debe coincidir con el de la
clase definida en él. - Se recomienda definir una clase por cada archivo
Java.
54Ejemplo de Clase
- public class Circulo
- // Atributos
- double radio
- String color
- // Metodos
- void asigRadio( )
- double area( )
55Creación de un objeto
- Se usa la palabra reservada new
- ltrefObjetogt new ltNombreClasegt()
- Ejemplo
- Circulo miCirculo
- miCirculo new Circulo()
56Acceso a los miembros de un Objeto
- A través del operador punto (.) se puede acceder
tanto a los atributos como a los métodos. - ltrefObjetogt.ltatributogt
- ltrefObjetogt.ltmetodogt()
- Ejemplo
- Circulo miCirculo new Circulo()
- miCirculo.radio 10
- miCirculo.color azul
- miCirculo.area()
57Métodos
- Son el equivalente a los procedimientos de los
lenguajes no OO. Un método es un bloque de código
definido dentro de una clase que proporciona un
mecanismo para realizar una acción. - Un método tiene acceso a todos los atributos de
su clase. - Un método puede invocar otros métodos
- En Java no se puede definir un método dentro de
otro. - La ejecución de todos los programas se inicia en
el método main.
58Definición de métodos (I)?
- Sintaxis para la definición de un método
- lttipoRetornogt ltnombreMetodogt(lt parametros gt...)
- ltinstruccionesgt...
- La declaración de un método tiene cuatro partes
básicas - El tipo del valor de retorno del método (tipo).
Si no devuelve ningun valor debe ser void. - El nombre del método (nombreMetodo)?
- Una lista de parámetros (parametros). Casa
parámetro tiene la forma lttipogt ltargumentogt. Se
separan con comas. - El cuerpo del método (instrucciones).
59Definición de métodos (II)?
- ltinstruccionesgt, Conjunto de instrucciones que
implementan la tarea que debe realizar el método.
- Si devuelve un valor debe finalizar con la
sentencia - return
- return ltvalorgt
- ltvalorgt Debe ser del mismo lttipoRetgt con que se
ha declarado el método. - El código se ejecuta hasta alcanzar la
instrucción return (si devuelve un valor) o hasta
el final del método. - Se pueden declarar variables locales si son
necesarias.
60Ejemplos de Métodos
public class Circulo // Atributos double
radio String color // Metodos void
asigRadio( ) double area( )
- double obtRadio( )
- return radio
-
- void asigRadio(int nuevoRadio)
- radio nuevoRadio
-
- public double Area( )
- return radioradioMath.PI
61Parametros
- Las variables en la lista de parámetros se
separan con comas. - Los parametros de la lista en la especificación
del método, son llamados parámetros formales. - Cuando un método es llamado, estos parámetros
formales son reemplazados por los parámetros
actuales. - Los parámetros actuales deben ser equivalentes
en tipo, orden y número a los parametros formales.
62(No Transcript)
63Paso de parametros por valor
- Cuando es invocado un método con un parámetro de
tipo primitivo, tal como int, el valor del
parámetro actual es pasado al método. - El valor actual de la variable fuera del método
no es afectado, independientemente de los cambios
hechos al parámetro formal dentro del método.
64Parametros por valor - Ejemplo
- class PruebaPasoPorValor
- public static void main(String args)
- int times 3
- System.out.println(Antes del llamado, la
variable times estimes) - 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 gt 0)
- System.out.println(n n)
- System.out.println(mensaje)
- n--
-
-
65Paso de parametros por referencia
- Se pueden pasar objetos a métodos como parámetros
actuales - Cuando se pasa un objeto al método la referencia
del objeto es pasado al parámetro formal - Cualquier cambio al objeto local que ocurra
dentro del método afectará al objeto original que
fue pasado como argumento.
66Parametros 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) -
-
67Parametros 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 radioradioMath.PI
-
68Alcance de las variables (I)?
- En java se dispone de tres tipos de variables
- Las variables miembro pertenecientes a una clase.
- Argumentos de un método de la clase.
- Variables locales de un método 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
-
69Alcance 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 método al que pertenece,
dejan de existir al finalizar el método. - Dentro de un método, si coincide el identificador
de un argumento o variable local con el de una
variable miembro, sólo se accede a la variable
del método.
70Ejemplo
- class A
- int x
- void metodo (int y)
- int x2
- y 3x y - x
- println(y)
-
-
- main
-
- int arg 4
- A obj new A()
- obj.x 1
- obj.metodo(arg)
- println(arg)
- println(obj.x)
-
71La referencia this
- Se emplea para referirse al objeto actual dentro
de un método. - Con this se hace accesible una variable miembro
cuyo identificador coincide con una variable
local.
72Constructores (I)?
- Un constructor es un tipo especial de método 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)
73Constructores (II)?
- Los constructores se pueden sobrecargar y son
opcionales - Si no se define ningún 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.
74Destructores
- 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.
75Características de la POO
76Más conceptos de OO
- Encapsulamiento Permite la protección de ciertas
partes de un objeto del acceso desde otros
objetos externos - Herencia Jerarquía de clases basada en la
agrupación de atributos o métodos comunes - Polimorfismo Tratamiento generalizado a todas
las clases pertenecientes a una jerarquía de
herencia.
77Encapsulamiento
- El encapsulamiento consiste en la agrupación de
datos y su tratamiento en una misma estructura. - Permite la proteccdión de la manipulación externa
de algunas partes de los objetos. - Un objeto suele tener datos y métodos privados,
de acceso restringido. - Fuerza al usuario a usar una interfaz para
acceder a los datos. - Hace que el código sea más fácil de mantener
78Modificadores para restringir el acceso (I)?
- La definición de los miembros de una clase se
puede ampliar añadiendo modificadores al
principio. - modificadorlttipogt ltidentificadorgt
- modificadorlttipogt ltnombregt(ltargsgt)?
- ...
- Los modificadores permiten acceder a los datos o
métodos de manera restringida
79Modificadores para restringir el acceso (II)?
- public. El miembro de la clase es accesible
desde cualquier parte del código. - private. El miembro de la clase sólo es
accesible desde código perteneciente a la propia
clase. - protected(o friendly). Sólo las subclases de la
clase y nadie más pueden acceder a las variables
y métodos.
80Herencia (I)?
- Jerarquia de clases basada en agrupar atributos
y/o métodos comunes - Las clases descendientes se llaman subclases.
- Las clases ascendientes se llaman superclases.
- Las subclases heredan características y métodos
de las superclases (excepto los constructores)?
81Herencia (II)?
- Supongamos que tenemos la clase Jefe y la clase
Secretaria definidas como - Jefe ltintgtltnumEmpleadogt, ltStringgtltnombregt,
ltintgtltnumDepartgt, ltintgtltnumSupervisadosgt - Secretaria ltintgtltnumEmpleadogt, ltStringgtltnombregt,
ltintgtltnumDepartgt, ltJefegtlttrabajaParagt - 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.
82Ejemplo herencia
- public class Articulo // clase padre
- public float precio0
- ...
- public void setPrecio(float elPrecio)
- precio elPrecio
-
- ...
- public float getPrecio()
- return precio
-
-
- //los métodos y atributos de Articulo son
heredados a Pelicula -
- public class Pelicula extends Articulo // clase
hijo - public void setDescripcion(String descrip)
- descripcion descrip
-
83Relación 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
ltcontenedorgt tiene un ltcontenidogt?
84Métodos virtuales
- Una subclase puede modificar los métodos 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() ...
85Polimorfismo
- Un método con el mismo nombre, tipo de retorno y
lista de parámetros puede ser aplicado a objetos
de diferentes clases. - Uso, trabajar con la clase más general
- Parámetros polimórficos
- Colecciones heterogéneas
- Empleado e1 new Empleado()
- Empleado e2 new Jefe()
- Empleado e1 new Secretaria()
- e2.numSupervisados 15 // ERROR
- ((Jefe)e2).numSupervisados 15