Sunteți pe pagina 1din 55

Cu

Lin




C
rso de J
eage Ja
Cu
Java Gr
ava par
urs
ratuito
ra la co

o d
orient
omunid
de
ado a e
ad de A
e Ja
emulad
Admins
ava
dores d
spro.
a

e





Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 1

El ndice se ir modificando conforme este manual se expanda.
ndice
Tema 1, Introduccin.
1.1 Conceptos de programacin orientada a objetos
1.2 Desarrollo de un objeto
1.3 El cuerpo de un objeto
1.4 Reglas para crear nombres (nomenclatura)
Tema 2, las clases
2.1 Alcance de una clase
2.2 Reglas de declaracin de una clase
2.3 Creando una clase
2.4 La clase abstracta

Tema 3, los mtodos

3.1 Funciones de un mtodo
3.2 Modificadores de acceso
3.3 Modificadores que no dan acceso
3.4 Argumentos de los mtodos
3.5 Constructores

Tema 4, las variables

4.1 Variables primitivas
4.2 Variables de instancia
4.3 Variables locales
4.4 Variables de tipo final, transient y volatile
Tema 5, Enumeraciones
5.1 Declarando una enumeracin
5.2 Declarando mtodos y variables en una enumeracin

Tema 6, usando las caractersticas de la POO

6.1 La encapsulacin
6.2 Polimorfismo
6.3 Casteo de variables de referencia
6.4 Implementando una interfaz
6.5 Tipos de retornos en constructores sobrecargados
6.5.1 Devolviendo un valor






Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 2
S que queremos hacer cosas ya, pero este manual no va indicado para personas con
inquietudes exprs, es decir, lo leo ya y lo quiero ya. Un buen programador, espero que
cuando acabes el manual lo seas, ha de ser meticuloso y usar todas las reglas aceptadas
universalmente por los programadores, muy importante cuando se trabaja en equipo o se
retoma el trabajo de otra persona, como es nuestro modelo L2J.
En este captulo sabremos que es un objeto, como funciona y reglas de programacin. No te
preocupes, empezaremos a programar tan pronto tengas la base necesaria. Acurdate de que
un gigante con pies de barro...

1.1 Conceptos de la programacin orientada a objetos
En programacin moderna, se usa una estructura llamada programacin orientada a objetos.
Esto no es ms complicado que decir para programar algo haremos uso de otros cdigos que
ya existen.
Entonces, el concepto de objeto: ahora mismo diremos que un objeto es un programa que
podemos incorporar a nuestro cdigo.
En este objeto existen funciones.
Una funcin, tal como su nombre indica es algo que est destinado a hacer, por ejemplo, las
funciones de un coche? Frenar, acelerar, girar...
Ahora imaginemos algo que podramos crear en breve, un formulario.
Funciones de un formulario? Recoger informacin, guardar informacin, recuperar
informacin...
Que podra necesitar el formulario para guardar la informacin al disco? Acceso al disco,
obviamente y... tendremos que crearnos un programa para poder grabar al disco? NO!!
Afortunadamente, todos los lenguajes tienen incluidos objetos bsicos (realmente no son tan
bsicos, se podran escribir miles de pginas... pero de momento lo dejamos aqu) que
usaremos.
Os habis dado cuenta de una cosa? Un objeto que slo sirve para acceder al disco... y nada
ms.










Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 3
1.2 Desarrollo de un objeto
Los objetos en cualquier lenguaje, y Java no es una excepcin, es que deben ser de bajo
acoplamiento y alta cohesin.
Bueno, y esto para qu sirve?
Ojo, si no ejecutas esta premisa a la perfeccin, tu programa va a ser un churro (para que
hablar con rodeos).
Primero, entremos en detalles, que es bajo acoplamiento?
Un programa de bajo acoplamiento significa, que si el programa se modifica, no afectar al
objeto que lo usa. Por ejemplo, imaginemos que tenemos un objeto llamado SUMADOR que
lo nico que hace es sumar dos nmeros. Este objeto se invoca por otro objeto llamado
CALCULADORA. SUMADOR acepta tomar dos nmeros y devolver su suma. Por cualquier
desdicha de la naturaleza, el cdigo de SUMADOR tiene que ser reescrito porque se ha
descubierto un fallo en su programacin. El bajo acoplamiento significa que aun reescribiendo
el cdigo de SUMADOR, CALCULADORA seguir usando a SUMADOR sin tener que editar su
cdigo, resumiendo, SUMADOR es totalmente independiente de CALCULADORA.
La alta cohesin significa que el programa har exactamente y nicamente eso para lo que fue
diseado, y nada ms; de esta manera, sabemos que SUMADOR solo suma, y no har las
funciones de RESTADOR (ms adelante explicaremos otras ventajas).
Con lo explicado aqu, sera censurable que CALCULADORA fuese un objeto que hiciese otra
tarea que no fuese calcular, y que su edicin forzase a que otro objeto que usase
CALCULADORA tuviera que ser editado tambin.
















Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 4
1.3 El cuerpo de un objeto
Un objeto comn, est compuesto de funciones y variables. Explicado brevemente, el objeto
tiene como misin hacer algo, y sus funciones son las tareas que puede realizar.
Hay tareas que necesitan guardar alguna informacin para poder ser realizada, para guardar
esta informacin se usan variables (porque su valor varia al menos, una vez).
Entonces, resumiendo porque esto no tiene ms:
Los objetos contienen funciones y contienen variables.
Las funciones contienen variables.
Al principio cit objeto comn porque ms adelante veremos otra clase de objetos.
























Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 5
1.4 Reglas para crear nombres, o nomenclatura.
Como sabemos cundo leemos un cdigo, si lo que leemos es un objeto, una funcin o una
variable? Es por su nomenclatura (no, no vamos a hacer qumica... todava).
Las reglas para crear nombres son:
Un objeto (tambin se le llama clase) siempre comienza su nombre por maysculas.
Una funcin siempre comienza su nombre por minsculas.
Una variable de clase ir antecedida con el smbolo de guin bajo _, ejemplo _xPos.
Este tipo de variables suelen ser privadas. Las veremos ms adelante.
Las dems variables sern en minsculas.
Aparte de la nomenclatura, los nombres de las clases tienen que ser descriptivas, es decir, su
nombre debe intuir lo que va a hacer, de tal manera, que cualquier lector ajeno al proyecto,
pueda saber, sin leer el cdigo, que es o hace la clase.
Sus mtodos deben ser creados de forma verbal, por ejemplo, las funciones de un coche se
llamarn frenar, acelerar y no freno o aceleracion.
Cuando se quiere obtener o asignar valores, se usan get y set, seguidos del nombre, get
significa obtener, y set, seleccionar. As que si queremos obtener la velocidad del coche,
getVelocidad.
Si lo que deseamos es saber si una operacin se est realizando, usaremos is, que significa en
castellano, ser o estar. Est frenando? -> isFrenando.
Debo decir, que en ingls, queda mejor -> isStopping.
Si estas fijndote, cuando se unen dos palabras, la segunda se pone en maysculas, a esto se le
llama camelCase, y tambin es otra regla que se aplica a todo.
Adems de las clases y funciones, las variables si van a trabajar durante un periodo largo,
tambin han de ser descriptivas, por ejemplo, fuerzaDeFrenado = 100.
Para terminar, las constantes de clase en maysculas, sin usar camelCase, y su lugar, guion
bajo (constante es una variable que una vez asignado su valor, ya no va a cambiarlo) ejemplo:
ANCHO_DOCUMENTO.










Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 6
2.1 Asignar el alcance de una clase
Estos modificadores tambin se pueden aplicar a las funciones y variables.
Cuando creas un objeto, puedes querer que ese objeto, pueda ser usado o no, dentro de su
mbito. Podemos querer que nuestra clase CALCULADORA sea invisible para la clase
INSTRUMENTO MUSICAL y que sea visible para la clase MATEMATICAS por razones evidentes.


Para poder hacer esto, al declarar una clase, podemos hacerlo de diferentes maneras:
Public
Al declarar una clase como pblica, ser visible desde cualquier otra clase situada en
cualquier otra parte.
Sin modificador o Default
Por defecto, una clase es visible en el paquete que se crea nicamente.


Al igual que creamos directorios en Windows (u otro sistema operativo) para agrupar ficheros
que son comunes entre s, o sea, que tienen alguna relacin entre ellos, los ficheros creados en
Java tambin cumplen la misma lgica. En un paquete Musica podramos encontrar los
paquetes Instrumento de Percusion, Instrumento de viento, Instrumento de cuerda, y dentro
de cada uno, mas directorios. Cada directorio se denomina paquete.














Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 7
2.2 Reglas de declaracin de una clase
Antes de crear tu primera clase, an tienes que conocer unas reglas ms, si, lo siento, es
pesado pero necesario, pero no te preocupes, slo con leerlas, te acordars de ellas, porque a
medida que avancemos, vers que son normas evidentes.
Slo puede existir una clase pblica por fichero fuente.
El nombre de la clase siempre ser el mismo que el nombre del fichero que la
contiene.
Si la clase est dentro de un paquete, el estamento package ser lo primero que
aparezca en el fichero de la clase conteniendo su ruta.
Lo siguiente que aparece despus de un package, son los comandos import.
Las instrucciones import y package se aplican a todas las clases del fichero, en otras
palabras, no hay manera de declarar diferentes package para cada clase definida en el
fichero.
Un fichero puede tener ms de una clase no pblica.
Las clases no pblicas del fichero pueden tener un nombre distinto al fichero que las
contiene.

En un package se inserta la ruta de la clase.
Los import se usan para importar otras clases.









Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 8
2.3 Creando una clase
Bien, ya hemos ledo todas las normas habidas y por haber para crear una clase. En estos
momentos somos unos eruditos en lo que a normas se refiere pero ya vamos a empezar la
accin.
Nuestra primera clase va a hacer poco, ya que, como dije antes, la programacin orientada a
objetos se basa en el uso de otras clases para hacer uso de ellas, y como no hemos visto
ninguna, no podemos hacer nada. Est fue una gran leccin, verdad? Nunca la olvidars.
Pero aun sin conocer ninguna clase, podemos crear un pseudo cdigo que tiene como misin
introduciros en el mundo de la programacin orientada a objetos, POO.
Mi primera ilustracin va a consistir en crear un coche y sus funcionalidades.
public class Coche {

public void frenar() { }
public void acelerar() { }

public String getAceleracion() {return null; }
public String getFrenada() {return null; }


}

Que estamos viendo aqu?
Primero, al escribir la clase, se indica su visibilidad. Recuerda que si no se indica, se obtiene un
alcance por defecto, es decir, slo es visible en el paquete que se crea.
Despus tenemos la instruccin class y el nombre de la clase abriendo y cerrando llaves al final
del cdigo, encerrando sus mtodos.
En sus mtodos podemos ver tres palabras que no habamos visto antes, se trata de void,
String y return.
Cuando un mtodo no devuelve nada, al nombre del mtodo le precede la instruccin void.
Cuando un mtodo devuelve algo, le precede el nombre del tipo que devuelve y entre
corchetes la instruccin return seguido de una variable (en este caso, nada, null).
El tipo se refiere a la clase de objeto que va a ser devuelto. Clases de tipos son por ejemplo,
cadenas (conjunto de letras), nmeros, nombres de clases como String, Integer, Object, etc...




Curso




o gratuito
2.4 La
El n
tipo y
No pu
abst






}

Cuan
asimi
Podr
Imag
cread
pero
neces
impre
progr
Extra
como
Al im
para
Si te
mto
cdig
de Java e
a clase abstr
ico propsit
y funcionalid
uede duplica
tract clas
private
private
private
public
public
public
do creas un
ilarlo a tu c
as pensar qu
ina que eres
dos en Coche
para que el
sita impleme
esionarVecin
ramar el prec
pola esto a u
o un GMShop
mplementar e
que tu clase
fijas, en cua
odos no imp
go de su inte
n emulado
racta
o de una cla
dad que la cla
arse.
ss Coche {
e double p
e String m
e String y
abstract
abstract
abstract
coche hered
digo.
ue, qu utilid
s el program
e. Otro progr
cdigo ya im
entar los m
nos... aparte
cio, el mode
un NPC de Li
p, que neces
esto en tu n
est correct
anto heredo
plementados
rior, es cosa
ores L2 Ja
ase abstracta
ase abstracta
{
precio;
modelo;
year;
void goFa
void goUp
void impr
dando la clas
dad tiene est
mador de Coc
ramador, po
mplementad
todos que tu
este nuevo
lo, el goFast
neage, si tie
sitas? Un NPC
nuevo coche,
tamente imp
CochePlanti
. En cuanto
tuya.
va
e m a i l :
a es la de cre
a.
ast();
pHill();
resionarVe
se abstracta
to?
che, y has c
dra crear un
do por ti func
u esperas qu
programado
... que ya est
nes un NPCW
CWalker ven
, inmediatam
plementada.
illa, me exig
pulses ah,
b r u j u l a
ear un patr
ecinos();
Coche, lo qu
reado un pr
n Coche com
cione correc
ue estn ah,
or, hara que
tn creados
Walker que q
ndedor, ciert
mente se inc
e Add unim
se impleme
t o @ y a h
n para crear
ue haces es c
rograma que
o el tuyo, qu
ctamente en
como el pre
su coche vo
por ti.
quisieras a la
o?
cluirn los c
mplemented
entarn los
2
o o . e s
r clases del m
coger un pat
e usa los m
ue adems v
el coche vo
ecio, el mode
olase sin tene
a vez que ven
digos nece
methods, a
mtodos, pe
2012
Pgina 9
mismo
trn y
todos
volase,
olador,
elo, el
er que
ndiera
sarios

aadir
ero el
Curso




o gratuito
Los m
Si el
abstr
Cuan
esto:
se dic
Mien
mezc
Tamb
tiene
priva
En la
estt
Sin e
mto
Una i
sea u
No co
Cuan
de Java e
mtodos mar
mtodo est
racto que ten
do una clase
ce que es un
tras que en
cladas, en un
bin, los mt
s que decla
do, cuando h
interfaz, las
icas (que no
mbargo, los
odos abstract
interfaz pued
una interfaz.
onfundir her
do se declar
n emulado
rcados como
tuviera en u
nga una clase
e abstracta,
a interfaz.
una clase ab
a interfaz no
todos de un
arar que son
heredases la
s variables q
cambian su
s mtodos n
tos hay que e
de heredar u
edar con imp
ra una interfa
ores L2 Ja
abstractos t
na clase no
e, tiene que
lo es al 100
bstracta pued
o.
a interfaz so
n pblicos y
clase abstra
ue puedes c
valor) y fina
o deben ser
editarlos. Si
una o ms in
plementar, y
ace, debe se
va
e m a i l :
terminan sie
rmal, es dec
ser marcada
0%, es decir,
des tener fu
on por defec
abstractos.
acta, las subc
crear tienen
les (que no p
r estticos, y
fueran estt
nterfaces, ad
ya que la inte
r indicado co
b r u j u l a
empre en pun
cir, con cd
a como abstr
que no pos
nciones con
cto pblicos
La razn e
clases no ten

que ser pb
pueden dupl
ya que, cuan
ticos, no se p
ems, no pu
erfaz no pue
on el modific
t o @ y a h
nto y coma, e
igo, con tan
acta tambi
see ningn c

cdigo y fun
y abstracto
s simple, si
ndran acceso
blicas (por lo
icarse).
ndo se hered
podran modi
ede heredar
de implemen
cador interfa
2
o o . e s
en lugar de l
n slo un m
n.
cdigo, algo
nciones abst
os, por lo tan
el mtodo
o a ellos.
o explicado a
da la interfa
ificar.
r otra cosa q
ntar nada.
ace.
2012
Pgina 10
llaves.
todo
como
ractas
nto no
fuera
antes),
az, los
que no
Curso




o gratuito
Si qu
modi

Aunq
interf

En un
acces

Los m
no va
ningu

Si en
ser t
por lo
de Java e
uieres que tu
ficador publ
que sea redu
faz.
na interface,
so a esa varia
modificadore
aran su val
una clase ten
cualquier c
tomada com
o tanto, al qu
n emulado
u interfaz se
ic, sino el ac
undante, pue
, como dije
able desde c
es que tienes
or, y que n
nga acceso a
aso olvidase
mo public stat
uerer modifi
ores L2 Ja
ea accesible
ceso por def
edes usar lo
antes, pued
ualquier clas
s que usar so
o se pueden
la variable y
es esto, no o
tic final irrem
car la variab
va
e m a i l :
desde cual
fecto (de paq
os modificad
es declarar
se.
on: public st
n duplicar. A
y altere su va
olvides que,
mediablemen
ble:
b r u j u l a
quier parte
quete, defau
dores public
constantes.
tatic final, es
Al no poder
alor.
aunque no
nte:
t o @ y a h
del cdigo,
ult) ser selec
y abstract p
Al hacer est
s decir, que
r duplicarse,
declares la v
2
o o . e s
has de aa
ccionado.
para declara
to, se garant
son pblicas
, te asegura
variable com
2012
Pgina 11
adir el
ar una
tiza el
s, que
s que
mo tal,
Curso




o gratuito
obten
VELO
se ha

de Java e
nemos un
OCIDAD_MAX
ace evidente
n emulado
error que
XIMA, y com
que JDK nos
ores L2 Ja
e nos com
mo veis en la
s ha declarad

va
e m a i l :
munica que
captura ant
do por defect
b r u j u l a
e borremos
terior, no ex
to que es pu
t o @ y a h
s el modif
xiste tal mod
blic, static y
2
o o . e s

ficador fina
dificador, es
final.
2012
Pgina 12
al de
decir,
Curso




o gratuito
3.1 Fu
Sin lo
que la
Cuan
Lo pr
actua
Es un
de su
su va
num
Para
o evit
un n
Las fu
Para
indica
vaco
Cuan
lugar
(Obje
Para
nomb
no lle

de Java e
unciones de
os mtodos,
a clase cobre
do invocamo
incipal que d
ar sobre las v
na buena pr
us mtodos p
ariable VELO
rico, tal com
evitar situac
tar errores, p
mero decim
unciones pue
indicar que n
amos con vo
o.
do queremo
de void lo o
ect) u cualqu
usar el mto
bre del mto
evan.
n emulado
los mtodos
las clases n
e vida, y sent
os una clase,
definimos en
variables de
ctica crear la
para evitar f
OCIDAD_MAX
mo se espera
ciones parec
porque, en lu
mal, pero aun
eden ejecuta
no devuelve
oid nuestra in
os devolver
ocupa el tipo
ier otra cosa
odo de una c
odo. Es como
ores L2 Ja
s.
o tendran m
tido.
, actuamos s
n un mtodo,
la clase direc
as variables d
allos en su u
XIMA, le pa
aba. Sin duda
idas, la buen
ugar de una
n as, sera un
ar una serie d
nada, despu
ntencin, qu
el resultado
o de objeto q
a que hayam
lase, se usa
o el ejemplo,

va
e m a i l :
mucho senti
sobre sus m
, son las fun
ctamente.
de las clases
uso. Por ejem
assemos un
a, acabara e
na prctica n
cadena de te
n valor incor
de acciones y
us del modi
ue traducido
o de una op
que vamos a
os inventado
el nombre d
, solo que, u
b r u j u l a
do. Los mt
todos.
ciones get y
de forma pr
mplo, podra
n valor de c
n tragedia:
nos obliga a u
exto, podra
rrecto.
y devolver u
ificador, o an
significa vac
peracin, de
a devolver, u
o (un Coche
e la clase seg
na funcin ll
t o @ y a h
odos son los
set, encarga
rivada, y man
mos usar la
cadena en l
usar un mto
mos haber p
n valor, o no
ntes del nom
o, es decir,
cualquier c
una cadena (
por ejemplo
guido por un
leva parnte
2
o o . e s
s responsab
adas de devo
nipularlas a t
clase Coche
ugar de un
odo para pre
pasado como
o devolver na
mbre de la fu
devuelve un
clase, enton
(String), un o
o).
n punto, y lu
esis, y las var
2012
Pgina 13
les de
olver y
travs
e, y en
valor

evenir
o valor
ada.
ncin,
n valor
ces el
objeto
ego el
riables




Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 14
3.2 Modificadores de acceso
Los modificadores de acceso de los mtodos son cuatro, en lugar de dos como en las clases
(Default y Public) y sus caractersticas son compartidas con las variables.
Si no defines ningn modificador, el modificador por defecto es Default (te lo recuerdo
nuevamente, con Default solo se logra visibilidad dentro del paquete donde se crea).
Public
Cuando un mtodo o una variable se declara pblica puede verse desde cualquier
parte del programa.
Private
Cuando el mtodo o la variable se declara privada, solo es accesible donde es creada.
Protected
Igual que privada, slo que tambin ser accesible por sus subclases.
Default
Por defecto, no estas forzado a declarar una clase Default. Si se omite el modificador,
Default es tomado por defecto.

Curso




o gratuito de Java e
3.3 Modif
Estos mo
Nonacces

Final
S
fi
m

Abstract
U
u
te
la
d
n
g
q
Ahora un
y final? P



n emulado
ificadores qu
odificadores
ss y hay siete
e usa para e
nal como p
mtodo no po
Un mtodo a
n mtodo n
ermina en pu
a subclase im
ebe hacer la
uestro Co
gastarCombu
ueroseno, ag
a pregunta d
iensa en ello
ores L2 Ja
ue no dan ac
se usan par
e clases.
evitar que el
armetro al
odr cambia
bstracto se
no funcional.
unto y coma
mplemente
a clase, pero
che puede
ustible, y de
gua, hidroge
de control an
o, la respuest
va
e m a i l :
cceso.
ra limitar el
l mtodo se
l mtodo, e
r el valor.
declara pero
. Recuerda q
a. Cuando us
estos mto
no la mane
e obligar
ependiendo d
eno...
ntes de cont
ta ms adela
b r u j u l a
l uso de los
a sobrescrit
s decir, pro
o no se impl
que un mto
as este mod
dos, forzand
ra en que de
a sus
del coche, p
tinuar, podr
ante.
t o @ y a h
mtodos, s
o en una su
porcionarle
ementa. En
odo abstract
ificador, lo q
do a definir
ebe hacerlas
subclases
podra gasta

as crear un
2
o o . e s
se les denom
ubclase. Si se
un valor fin
otras palabr
to no lleva l
que buscas e
las accione
s. As por eje
a implem
r gasolina, d
mtodo abs
2012
Pgina 15
minan
e pasa
nal, el
ras, es
llaves,
es que
es que
emplo,
mentar
diesel,
tracto





Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 16
Synchronized
Indica que el mtodo slo puede ser accedido una vez al tiempo, es decir, que
hasta que la tarea con la primera clase que invoc este mtodo no haya
acabado, pondr en espera a los dems hilos que estn esperando ejecutar
este hilo. Esto es til para una tarea como guardar un fichero. Si se estn
guardando datos, sera un error permitir que otro hilo insertase nuevos datos
mientras se lleva a cabo la operacin de salvar datos. El resultado final es
imprevisible. Las variables no pueden ser declaradas Synchronized.

Native
Este modificador indica que el mtodo se ha implementado desde otra
plataforma de cdigo diferente, normalmente en lenguaje C. Tambin, al igual
que Synchronized, es exclusivo de los mtodos.

Transient
Para entender este, hay que saber primero que es serializar. Cuando se
serializa un objeto, se pretende guardar la informacin que contiene
normalmente en disco. Por ejemplo, el objeto Agenda podra contener objetos
Personas. Si queremos guardar el contenido de la agenda, primero, hay que
serializar el objeto. Bien, pues Transient indica que ese campo no debe ser
serializado por ejemplo, porque sean derivadas de otros campos.

Strictfp
Se usa para asegurar que cualquiera que sea la plataforma donde se ejecute el
programa, la precisin de un nmero decimal sea el mismo. Si se omite, la JVM
usar la precisin que mejor considere.

Static
El ms complejo de usar. Resumir brevemente aunque ser comentado en
profundidad ms adelante.
Una variable esttica es una variable que pertenece a la clase, no al objeto,
quiero decir, una instancia de ese objeto (una instancia, un clon).
Las variables estticas se inicializan una sola vez, al comienzo de la ejecucin
del programa antes que cualquier otra variable.
Un mtodo esttico slo puede acceder a otros mtodos estticos.




Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 17
Un mtodo o variable esttica es accesible directamente,
NombreClase.NombreMetodo.
Un mtodo esttico no puede usar this o super.
Se puede marcar como static:
Mtodos
Variables
Clases anidadas (no dentro de un mtodo, se ver mas adelante)
Inicializacin de bloques
No se puede marcar como static:
Constructores (ya que se usan para crear instancias)
Clases (a menos que estn anidadas)
Interfaces
Mtodos locales dentro de las clases (lo veremos en detalle)
Mtodos internos de clase y variables de instancia.
Variables locales.

La palabra reservada this se usa para referirse a la variable de la clase, y super a la
variable de la superclase, es decir, la clase de la que se deriva la clase actual.

La respuesta a la pregunta, se puede declarar un mtodo como abstracto y final es... falso.
Ambas declaraciones son opuestas, un mtodo abstracto tiene que ser sobrescrito, recuerda
que se declara sin cdigo, mientras que un mtodo final evita ser modificado.







Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 18
3.4 Argumento de los mtodos
Es comn en cualquier lenguaje, que los mtodos acepten parmetros, es decir, en un
objeto, para que se cree una accin, a veces es necesario decirle alguna informacin.
Por ejemplo, si el mtodo fuera, acelerar, una pregunta obvia sera, cunto?
Recordarte antes que nada, que un mtodo se crea primero poniendo su modificador
de acceso (que es opcional, sino se elige, la JVM toma Default), luego el tipo de retorno
que poda ser cualquier cosa (si no quieres ningn tipo de retorno, se escribe void),
seguido del nombre del mtodo y entre parntesis los parmetros.
Pues en Java, la manera ms simple de crear un mtodo es hacer uno que no tome
ningn parmetro:
public class ejemplos {

public void digoHola()
{
System.out.print ("HOLA");
}

}

Explico un poco lo que vemos, primero, la clase, que abre llaves y encierra a un mtodo que no
toma parmetros y se cierran las llaves de la clase.
En el interior de la clase, el mtodo se declara encerrando entre llaves las acciones.
Cuando insertamos un parmetro en el mtodo, debemos decirle a la JVM el tipo de dato que
va a ser insertado. Puede ser cualquier cosa que exista. En este ejemplo, ser de tipo String,
que significa cadena de texto.
public class ejemplos {

public void digoHola(String nombre)
{
System.out.print ("HOLA " + nombre);
}

}

Ahora podemos ver que al ejecutar nuestro ejemplo, nos pedir un nombre para incluir, y que
en el mtodo usaremos ese nombre para incluir en el saludo.




Curso




o gratuito
Conti
publ




edad


}

Ahora
El cd
ejem
Pued
No ha
Si qu
signif
La cla
busca
nos la

de Java e
inuemos con
lic class

public
{
S
d + "aos.
}
a nuestro re
Hola Mar
digo para ob
mplos.digo

es seguir sum
ay problema
uisiramos h
fica, entero,
ase main, qu
a un mtodo
anzara un er
n emulado
n el ejercicio
ejemplos
void digo
ystem.out
");
sultado sera
ria, se que ti
btener este re
oHola("Mar
mando par
a.
hacer una o
o mejor dich
ue sera la cl
o llamado ma
rror.
ores L2 Ja
y ahora tom
{
oHola(Stri
.print ("
a algo como:
ienes 17 ao
esultado ser
ria","17);
metros hasta
operacin m
ho, nmero e
ase que siem
ain para ejec
va
e m a i l :
maremos la e
ing nombre
HOLA " +
:
os.
a:
;
a que la RAM
matemtica c
entero:
mpre se ejec
cutar el prog
b r u j u l a
dad como sig
e, String
nombre +
M de tu orde
con la edad
cuta primero
rama. Sino e
t o @ y a h
guiente par
edad)
", se que
enador se qu
, usaramos
o por defecto
existiese ning
2
o o . e s
metro:
e tienes "
uede sin mem
s el tipo int
o y porque la
gn mtodo
2012
Pgina 19
" +
moria.
t, que

a JVM
main,
Curso




o gratuito
La co

Como
como
parm
Este
ltim
Salida
Esta
hace



de Java e
nsola nos de
o colofn de
o parmetro
metros.
tipo slo se
mo:
a de la conso
forma var a
es convertir
n emulado
evuelve el re
e los parme
un var-args
e acepta una
ola:
rgs se form
r la variable e
ores L2 Ja
sultado de la
tros hay un
s estamos di
a sola vez e
ma escribiend
en un array q
va
e m a i l :
a operacin.
argumento d
ciendo que
en un mtod
do tres punt
que se puede
b r u j u l a

denominado
esperamos u
do y siempr

tos despus
e recorrer co
t o @ y a h
o var-args, cu
un nmero i
e tiene que
del tipo y e
on un for.
2
o o . e s
uando declar
indetermina
e ser declara
en realidad l
2012
Pgina 20

ramos
do de
ado el

o que




Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 21
Conceptos nuevos:
Un array es una variable capaz de almacenar ms de un dato.
Este for se denomina foreach porque toma un valor del array y lo introduce en una
variable. Se trata de un bucle que recorre todos los valores almacenados en la variable,
en cada vuelta introduce el valor del array en la variable hasta llegar al ltimo valor.
Un bucle es un bloque de instrucciones que se repite un nmero de veces.

Todo esto se ver ms en detalle.

Curso




o gratuito
3.5 C
En un
para
Por e
mode
Si a c
coche
otro
rene
Habie
distin
Cada
ests
La pr
para
lleva
Qu v
la cla
Para
Para
objet
new
clona
Si el c
publi
de Java e
Constructores
n lenguaje o
obtener nue
ejemplo, si
elo, potencia
ada modelo
es, al fin y a
Ferrari y otr
e todas las si
endo aclarad
ntos comport
vez que ins
s ejecutando
imera cosa q
diferenciar u
void.
vemos aqu?
se por defec
instanciar un
convertir la
to que se va
(traducido s
ar, como lo v
constructor n
ic Coche (){}
n emulado
s
orientado a o
evos objetos
creamos un
a y velocidad
Coche, le as
l cabo son c
ro modelo Po
imilitudes de
do que inst
tamiento, es
stancias un o
un construc
que llama la
un mtodo d
? Pues estam
cto Coche. Re
n objeto se u
variable Fe
a instanciar
significa nuev
veas ms clar
no existiese,
ores L2 Ja
objetos la pr
con distinto
objeto Coc
d mxima por
signamos una
coches con d
orche, sino q
e un Coche.
tanciando un
s hora de exp
objeto, por d
ctor. Si no lo
atencin es
de un constru
mos viendo d
ecuerda que
usa el coman
errari en una
r, en el ejem
vo, nuevo Co
ro) y entre pa
la JVM impl
va
e m a i l :
rincipal carac
o comportam
che, las prop
r poner un e
a marca dist
distintas cara
que creamos
n objeto Co
plicar la func
decirlo de o
haces t, la
que un cons
uctor nos fija
dos clases, la
un fichero s
ndo new.
a instancia d
mplo es Coch
Coche) seguid
arntesis, las
ementara (a
b r u j u l a
cterstica es
miento.
piedades de
ejemplo.
inta, estamo
actersticas.
s estos mode
oche podem
cin de un co
tra manera,
JVM lo hace
tructor se pa
amos que el
a clase pblic
slo puede te
de coche, p
he, seguido d
do del objeto
s opciones d
aunque no a
t o @ y a h
que los obje
el objeto po
os creando nu
No creamos
elos a partir
os crear nu
onstructor.
un nuevo c
por ti.
arece horror
constructor
ca Main crea
ener una clas
rimero se u
de la variable
o que quere
el constructo
parecer en
2
o o . e s
etos se insta
odran ser, m
uevos mode
s un modelo
de un objet
uevos coche
clon de un o
res a un mto
r no lleva ret
ando un Ferr
se pblica.
usa el nomb
e, y luego u
emos instanc
or.
el cdigo):
2012
Pgina 22
ancian
marca,
los de
Ford,
to que
es con
bjeto,
odo, y
urn ni

rari, y
re del
sando
ciar (o
Curso




o gratuito
Ahora
La va
may
Luego
la de
instan
Luego
forma
nomb
confu
coche
Hay
mto
Por e
coche









de Java e
a veamos el
ariable de la
sculas y los
o tenemos e
e asignar la
nciemos un C
o tenemos
ato del nom
brar un mt
usin, como
e pasada por
una tcnica
odos con el m
ejemplo, aqu
e sin parme
n emulado
cdigo del C
a clase, tal
espacios sep
el constructo
variable de
Coche, tendr
un mtodo
mbre es cam
todo con el
es este caso
r parmetro.
de program
mismo nomb
u declaro d
etros, en la l
ores L2 Ja
Coche:
como indica
parados med
r, el nombre
e la clase la
remos una m
coche, resp
melCase. Pero
l mismo no
o. La funcin
.
macin que
re pero acep
os construct
nea 14 const
va
e m a i l :
amos antes,
diante guin
e es el mismo
a marca del
marca.
petando el
o aun respe
mbre que s
n de este m
se llama so
ptando difere
tores, el pri
truye un Coc
b r u j u l a
por el conv
bajo, MARCA
o que el de la
l coche, de
convenio de
etando el co
su clase, po
todo es imp
obrecarga de
entes parm
imer constru
che con la M
t o @ y a h
venio de Jav
A_DEL_COCH
a clase, Coch
esta maner
e Java para
nvenio, es u
orque slo e
rimir en pan
e mtodos,
etros.
uctor (lnea
ARCA_DEL_C
2
o o . e s
va, se escri
HE.
he, y su func
ra, cada ve
a los mtod
una mala pr
es til para
ntalla la mar
consiste en
13) constru
COCHE.
2012
Pgina 23

be en
in es
z que
os, el
rctica
crear
ca del
crear

ye un
Curso




o gratuito
Ahora
Este c
En la
const
(nm
Coche
(trad
Ahora
de la
pbli
parm
se rod





de Java e
a completem
cdigo es alg
a clase Coch
tructor que t
meros entero
e, respetan
ucido signific
a, al instanci
a clase est
ca Main ins
metros que n
dean con co
n emulado
mos lo que se
go mas comp
he ahora ha
toma dos pa
os). Para com
do siempre
ca obtener).
iar un Coche
esperando,
tancia un Co
no son caden
millas.
ores L2 Ja
era un Coche
pleto definie
ay cuatro pr
armetros d
mpletar, aa
el conven
, tendremos
sino, nos da
oche pasand
nas de texto
va
e m a i l :
e:
ndo el Coche
ropiedades
e tipo String
adimos un m
io de Java,
s que introdu
ar error y
do cuatro pa
o, se pasan si
b r u j u l a
e.
en lugar de
g (cadena de
mtodo para
, usamos g
ucir toda la in
no nos deja
armetros en
in usar comi
t o @ y a h
e una. Tamb
e texto) y do
a obtener la
et como pa
nformacin q
ar compilar
n lugar de d
llas. Slo las
2
o o . e s
bin tenem
os ms de ti
a informaci
arte del no
que el constr
r. As que la
dos. Si te fija
s cadenas de
2012
Pgina 24

os un
po int
n del
ombre
ructor
clase
as, los
texto
Curso




o gratuito
Ahora
La co
la esp
como
orien










de Java e
a hagamos d
nsola arroja
pecificacin
o resultado
ntada a objet
n emulado
dos coches y
:
de los dos co
nuevos obje
tos.
ores L2 Ja
probemos e
oches. Como
etos con dif
va
e m a i l :
el resultado.
o ves, el usar
ferentes com
b r u j u l a
r un objeto c
mportamient
t o @ y a h
con diferente
tos. Esto es
2
o o . e s

es propiedad
s la program
2012
Pgina 25
des da
macin
Curso




o gratuito
4 Las
Deca
debe

4.1 V
Hay o
char:
boole
byte:
short
int: a
long:
float:
doub
1.797
Aunq
Esto
que a
Si pre





de Java e
s variables
amos antes q
ser significa
Variables prim
ocho tipos de
es un carct
ean: es un 0
almacena u
t: almacena u
lmacena un
almacena u
: almacena u
ble: alm
76931348623
que para nue
slo es a ttu
aprender bie
efieres apren
n emulado
que las varia
ativo, para re
mitivas
e datos prim
ter, su rango
o un 1, se us
n valor entre
un valor entr
valor entre -
n valor entre
un valor entre
acena u
31570e+308
estros efecto
ulo informat
en boolean e
ndrtelo de o
ores L2 Ja
bles son pala
elacionar de f
itivos en Jav
o va desde el
sa para indica
e -128 al 127
re -32,768 y
-2,147,483,6
e -9,223,372
e 1.4012984
un valor
8d
s, usaremos
tivo, no tend
int, que son
otra manera,
va
e m a i l :
abras que gu
forma huma
va, son:
0 al 65,535
ar si una con
7.
32,767.
648 y 2,147,4
,036,854,775
46432481707
r entre
normalmen
drs que apr
n los ms usa
, a m me gu
b r u j u l a
uardan un va
ana lo que gu
ndicin es fal
483,647.
5,808 y 9,22
7e-45 y 3.402
4.9406
te float.
endrtelo de
ados.
sta ms esta
t o @ y a h
lor, y el nom
uarda.
lsa o verdade
3,372,036,85
2823466385
5645841246
e memoria, a
a:

2
o o . e s
mbre de la va
era.
54,775,807
528860e+38
6544e-324d
aunque si te
2012
Pgina 26
ariable
y
endrs
Curso




o gratuito
4.2 V
Las v
cualq
Qu d
instan
Muy
cuatr
marc
No pu
Para
Fjate
pero
de cla
que c
Obte

de Java e
Variables de i
ariables de u
quier mtodo
diferencia ha
ncia, es deci
importante
ro niveles de
adas como f
uedes declar
entender va
e que en la v
al poner com
ase, y al asig
cuando se eje
nemos:
n emulado
instancia
una instancia
o, y se inicial
ay entre una
r, no se pued
es recorda
e acceso (te
final y transie
rarlas como a
riable de cla
variable de in
mo esttica
gnarle un va
ecuta:

ores L2 Ja
a (no de una
izan cuando
a variable de
de clonar con
r que las va
acuerdas? p
ent.
abstract, syn
se y variable
nstancia, cad
una de las v
lor al Ferrar

va
e m a i l :
a clase), se d
se inicializa
e clase y otra
n new.
ariables de
public, privat
nchronized, s
e de instanci
da modelo d
variables, au
ri, tambin s
b r u j u l a
definen dent
la clase.
a de instanc
instancia pu
te, default y
stricfp, nativ
a, he modific
de Coche tien
tomticame
se le asigna e
t o @ y a h
ro de una cl
cia? La variab
ueden usar c
protected)
e y por supu
cado el cdig

ne sus propi
nte se transf
el valor al To
2
o o . e s
ase pero fue
ble de clase
cualquiera d
y que puede
uesto, static.
go:
ias caracters
forma en va
Toyota, de m
2012
Pgina 27
era de
no se
de los
en ser
sticas,
ariable
manera
Curso




o gratuito
4.3 V
Las v
destr
Las va
Al co
inicia
Que e
Que e
Tamb
El res

de Java e
Variables loca
variables loc
ruyen cuando
ariables loca
ontrario que
alizarlas prim
es declarar u
es inicializar
bin puedes
sumen de los
n emulado
ales
cales se enc
o el mtodo
ales slo pue
las variable
mero, es decir
una variable?
una variable
inicializar la
s modificado
ores L2 Ja
cuentran en
ha terminad
den ser mar
s de clase, l
r, asignarle u
? Decir que e
e? Asignarle
variable cua
ores que pue

va
e m a i l :
n los mtod
do su tarea.
cadas como
las variables
un valor.
existe sin que
un valor (au
ando la decla
edes usar:
b r u j u l a
os, viven y
final.
s locales par
e contenga u

nque sea un

aras:

t o @ y a h
mueren de
a poder usa
un valor, por
valor vaco)

2
o o . e s
entro de el,
arlas, es nec
r ejemplo:
).
2012
Pgina 28
, y se
esario




Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 29
4.4 Variables de tipo final, transient y volatile
El modificador final hace imposible reiniciar la variable una vez que se ha obtenido un valor
explcito (que es distinto que un valor por defecto, como ocurre con las variables de clase).
Acurdate que una clase final no puede heredarse, un mtodo final no puede sobrescribirse en
una subclase y una variable final, no puede modificar su valor.
El modificador transient sirve para decirle a la JVM que ignore la variable cuando se quiere
serializar el objeto o deserializarlo. Cuando de/serializas un objeto lo que haces es
recuperar/almacenar la informacin (del/en disco duro por ejemplo). Este recurso tan
interesante ser visto ms adelante en profundidad.
El modificador volatile le dice a la JVM que el hilo que accede a la variable debe obtener su
propia copia. Esto se usa en procesos multihilos, donde cada hilo de ejecucin podr variar el
valor de la variable. Profundizaremos en esto ms adelante, ahora solo tienes que saber que
existe para ser usados en programacin multihilos.





Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 30
4.5 Variables estticas.
El modificador static se usa para crear variables estticas. Una variable esttica pertenece
siempre a la clase donde se crea, no a sus instancias (o clones). Como vimos en el ejemplo
anterior, al crear una variable esttica en la clase Coche, su valor cambiaba en todas las
instancias creadas con Coche, en el ejemplo, al cambiar el valor en Ferrari, Toyota tambin fue
afectado.

Curso




o gratuito
5.1 D
Una e
traba
En Ja
llama
Digam
turism
existe
Decla
Respe
El us
Eclips



de Java e
Declaracin d
enumeracin
ajo. Esta es u
ava se puede
a lista enume
mos por eje
mo y comer
e, digamos 4
arar una enu
etando el co
so es igual d
se) te ayuda
n emulado
de una enum
n se usa par
na buena pr
e restringir
erada o enum
mplo que te
rciales. Para
4x4, se restrin
meracin es
onvenio de Ja
de sencillo,
mostrando
ores L2 Ja
meracin
a minimizar
ctica, adem
una variable
meraciones.
enemos vari
evitar que o
nge los valor
s tan fcil com
ava, se prese
adems, cu
las opciones
va
e m a i l :
an ms los
ms que facil
e para tener
ios tipos de
otro program
res de la enu
mo esto:
entan en may
uando decla
disponibles
b r u j u l a
s riesgos de
ita la lectura
r unos valor
coches que
mador inten
umeracin a
ysculas.
ras una enu
:
t o @ y a h
equivocaci
del cdigo.
res predefini
e podemos t
nte obtener
los que teng
umeracin, e
2
o o . e s
n en un gru
idos, a esto
tener, depor
un coche q
gas creados.

el editor (y
2012
Pgina 31
po de
se le
rtivos,
ue no
o uso

Curso




o gratuito
De ta
dispo
Los c
como
decla
As se
Acu
Esto s
Es po
opcio
de Java e
al manera qu
onible la enu
componente
o clase prop
aradas dentro
e declara com
rdate que s
sera miemb
osible que e
onal.
n emulado
ue la nica fo
meracin:
s bsicos de
pia (como e
o de un mto
mo miembro
lo puede ex
bro de una cla
encuentres l
ores L2 Ja
orma de con
e una enum
en este ejem
odo.
o de una clas
istir una clas
ase:
la declaraci
va
e m a i l :
seguir coche
meracin son
mplo), miem
se:
se pblica po
n de una e
b r u j u l a
es ahora es u
n sus consta
mbro de una
or fichero.
enumeracin
t o @ y a h
usar las opcio
antes. Puede
a clase, pero
n terminand
2
o o . e s
ones que no
en ser decla
o no puede
do en ; es
2012
Pgina 32
s deja

aradas
en ser


sto es




Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 33
Bueno, y una vez que tengo una enumeracin, que hago?
Antes hay que explicar un poco ms. Una enumeracin no es un tipo String o int. Cada
miembro de una enumeracin es una instancia de la misma (o sea, un nuevo clon). As que
DEPORTIVO no es slo una constante de la enumeracin, es un tipo de TiposDeCoches. Es
decir, al igual que un tipo es un String o un int, pues acabamos de crear tres tipos nuevos de
TiposDeCoches.
Una enumeracin es como una clase, la diferencia es que a cada valor le corresponde una
instancia de la enumeracin, donde la instancia es esttica y final, es decir, no se puede editar
su valor, ni se puede hacer una subclase de ella (usar la palabra new) as que realmente se
tratan como de una constante.
A cada valor de la enumeracin le corresponde un orden de indexado, es decir, la enumeracin
sabe en que orden estn los tipos de coche.
Ms adelante profundizaremos en este tema, de momento tienes que saber que existe y cmo
funciona bsicamente.

Curso




o gratuito
5.2 M
Una e
que u
cuerp
a los
Bien,
presu
usar
clase
parm
const
Al igu
getPu
No p
autom
DEPO
es as
Al igu
Tamb
de cla
cuand
Lo ve
de Java e
Mtodos y va
enumeracin
una clase, es
po de clase c
tipos, como
no te asuste
umiendo que
estos nme
s, tiene el
metro de ti
tructor acept
ual que las c
uertas.
puedes olvid
mticamente
ORTIVO(3) in
, es que nec
ual que en la
bin puedes
ases la verem
do necesitas
eremos ms c
n emulado
ariables en u
n adems de
s decir, pode
constante es
por ejemplo
es, es sencill
e representa
eros es nece
mismo nom
ipo int que
ta un nmer
clases, he inc
dar que en
e con los
voca al cons
cesitas practi
s clases, pue
hacer cosas
mos ms ad
s una constan
claro con un
ores L2 Ja
una enumera
e declarar tip
emos usar m
pecfica. Est
o, el nmero
o y te lo voy
an el nmero
esario crear
mbre que la
se recoge
ro que repres
cluido un m
el construct
argumento
structor y le
icar esto un p
edes sobreca
extraas, co
elante), se c
nte para defi
ejemplo.
va
e m a i l :
acin
pos estticos
mtodos y va
o es til por
de puertas (
y a explicar. A
o de puertas
un construc
a clase dond
del valor g
senta la cant
todo para s
tor no se p
os que def
pasa el par
poco. Coge E
argar el const
omo que par
conoce como
inir un mto
b r u j u l a
y finales, pu
ariables, y al
ejemplo, si
(por decir alg
A cada tipo le
s de cada tip
ctor, ese con
de se crea.
guardado e
tidad de pue
saber cunta
puede invoca
fines en la
metro 3. Est
Eclipse (u otr
tructor, es d
rezca una cla
o cuerpo de
do definido
t o @ y a h
uede ejecuta
go rarament
quieres aad
go):
e hemos asig
po de coche
nstructor, al
En nuestro
n el tipo, e
rtas del tipo
as puertas ti
ar directame
s constante
to lo habrs
ro editor) y p
ecir, crear m
ase annima
constante e
en la enume
2
o o . e s
ar acciones a
te conocido
dir una prop
gnado un n
. Pero para
l igual que e
o caso acep
es decir, nu
o de coche.
iene ese veh
ente. Se co
es. Por eje
adivinado, y
practica un p
ms de uno.
interna (est
especfico y s
eracin.
2012
Pgina 34
l igual
como
piedad

mero,
poder
en las
ta un
uestro
hculo,
nvoca
emplo
y si no
poco.
te tipo
se usa
Curso




o gratuito
Imag
gasol
Pued
abier
Mien
COM

de Java e
inemos que
ina pero el c
es fijarte qu
rto unas llave
tras que pa
MERCIAL devo
n emulado
necesitamos
comercial ser
ue a la enum
es donde se d
ara el DEPOR
olver diesel
ores L2 Ja
s devolver el
ra diesel.
meracin se
define el mis
RTIVO y el
.

va
e m a i l :
l tipo de com
incluye getC
smo mtodo
TURISMO e
b r u j u l a
mbustible del
Combustible
o, es decir, lo
el combustib
t o @ y a h
l coche, por d
, pero en CO
est sobres
ble devuelto
2
o o . e s
defecto son

OMERCIAL s
scribiendo.
ser gasoli
2012
Pgina 35
todos
se han
na, el
Curso




o gratuito
6.1 En
La en
de ha
Imag
que n
traba
Si acc
Que
Un ti
es un
Otra
otro
neces
Por e
Aqu
progr
infini
desco
arreg

de Java e
ncapsulacin
ncapsulacin
acerlo directa
nate que es
no conocen
ajo aunque e
cedieses dire
es un tipo?
po es cada c
n tipo.
ventaja es e
programado
sitar saber
ejemplo:
tenemos el
ramador que
ta. Si Code
ompensase e
glar este bug
n emulado
n
consiste en
amente. Bue
stas creando
las clases q
stis particip
ectamente a
clase creada
el mantenim
or usase tu
siquiera los c
hipottico
e la est us
r crease un
el server (po
!
ores L2 Ja
el acceso a
eno, y esto p
o un cdigo
ue has hech
pando en el m
las variables
para trabaja
iento del c
clase media
cambios que
caso en qu
ando. Como
n arma con
orque el juga
va
e m a i l :
las variables
para qu sirve
donde ests
ho, y la mism
mismo proye
s podras pas
ar con ellas,
digo. Si en t
ante los m
e hagas en tu
e un progra
o vemos, pu
potencia c
ador se hicie
b r u j u l a
s de la clase
e?
s trabajando
ma situacin
ecto, te va so
sarle tipos er
cada objeto
tu cdigo hu
todos de la
u programa,
amador ha c
ede declara
cien millone
se invulnera
t o @ y a h
mediante un
con un pu
es la tuya,
onando L2J?
rrneos.
o que se crea
biera que co
clase, este
no se entera

creado la cla
r un Arma c
s y resultas
able, por ejem
2
o o . e s
n mtodo en
ado de pers
tu no conoc

a o existe en
orregir el cd
programad
ar.
ase Arma, y
con una pot
se que esa
mplo), habr
2012
Pgina 36
n lugar
sonas,
ces su
n Java,
digo y
or no
y otro
tencia
arma
a que
Curso




o gratuito
Como
nico
Magn
esta m
sin te
Los b
La ha
clave
Cuan
imple
Para


de Java e
o arreglar es
o que tiene q
neto rescrib
manera Cod
ener que mir
beneficios qu
abilidad de h
de la encap
do creas u
ementacione
conseguir m
Las varia
normalm
Crea m
directam
Usa la co
n emulado
ste bug sin
que hacer es
e su cdigo,
der no tiene q
rar tu cdigo
e recibes pe
acer cambio
sulacin.
na serie de
es ocultas pa
mantenimient
ables de la
ente, privad
todos de a
ente a los m
nvencin de
ores L2 Ja
que Coder t
limitar la po
si la potenc
que editar su
.
nsando en P
os en tu cdi
e mtodos
ra proteger t
to, flexibilida
instancias
o.
acceso pbli
todos en lu
JavaBeans, s

va
e m a i l :
tenga que e
otencia del ar
cia es mayor
u cdigo, ni
POO es flexib
go sin romp
accesibles d
tu clase), est
ad y extensib
deben esta
ico para fo
ugar de a las
setNombreM
b r u j u l a
editar su cd
rma:
r de 100, ent
se ha entera
bilidad y man
er el cdigo
desde otras
tas creando
bilidad debes
r protegidas
orzar a otro
variables.
Metodo, getN
t o @ y a h
digo? Bien,
tonces la po
ado, l sigue
ntenimiento.
de otros pro
clases (y
APIs.
s seguir estas
s, el modifi
os programa
NombreMet
2
o o . e s
pues Magne
otencia es 10
e haciendo lo

ogramadores
manteniend
s premisas:
icador de a
adores a ac
todo.
2012
Pgina 37
eto lo
00. De
o suyo
s es la
o tus
acceso
cceder
Curso




o gratuito
Veam
Como
el pro
Ahora
setPo

de Java e
mos ejemplos
o habamos
ogramador n
a la nica
otencia.
n emulado
s:
dicho antes,
no pueda acc
manera de
ores L2 Ja
las variable
ceder directa
e selecciona
va
e m a i l :
s de instanc
amente a ella
ar la poten
b r u j u l a
ia han de se
a.
cia del arm
t o @ y a h
r privadas, d
ma es med
2
o o . e s
de tal maner
iante el m

2012
Pgina 38

ra que
todo
Curso




o gratuito
Encap
an t
El er
dema
Vas a
queja

de Java e
psulada la va
tenemos un p
ror es que
asiado tarde,
a decirle a Co
ando porque
n emulado
ariable de cla
posible error
Coder an
, ya estn us
oder que ha
e su arma no
ores L2 Ja
ase y protegi
r que contro
podra crear
ando el prog
ingresado u
mata sino q

va
e m a i l :
iendo el exce
olar, os pongo
r un arma c
grama.
un valor neg
ue cuenta ch
b r u j u l a
eso de poten
o el cdigo:
con potencia
gativo para e
histes?
t o @ y a h
ncia mediant
a -100, pero
el arma y que
2
o o . e s
te nuestro c
o te diste c
e la gente se
2012
Pgina 39
digo,

cuenta
e est
Curso




o gratuito
NO! M
y Cod

de Java e
Magneto res
der ni se ente
n emulado
scribe su cd
era.
ores L2 Ja
digo gracias a

va
e m a i l :
a que ha hec
b r u j u l a
cho uso de la
t o @ y a h
encapsulaci
2
o o . e s
in.
2012
Pgina 40





Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 41
6.2 Polimorfismo
El polimorfismo es la posibilidad de que una clase hereda las caractersticas de otra clase para
crear una nueva.
La clave para usar de buena forma el polimorfismo es preguntarte ES UN?
Ejemplo, creamos la clase Coche, y luego creamos Ferrari heredando las caractersticas de
Coche. Como saber si lo estamos haciendo bien? Plantate la pregunta, Es un Ferrari un
Coche? La respuesta es SI.
Ahora creas la clase Mercedes heredando las caractersticas de Ferrari. Ambos son coches,
parece estar bien, pero si te preguntas Un Mercedes es un Ferrari? La respuesta es NO, as
que estas liando los objetos.
Con este truco jams te equivocars. Recuerda, ES UN.
Para usar esta caracterstica usamos la palabra clave extends.
En que consiste la herencia?
La herencia consiste en heredar todas las propiedades de una clase. La utilidad de esto es que
aadiendo nuevas propiedades creas nuevos objetos.
Ejemplo, la clase Coche lleva ruedas, puertas, frenos, motor.
La clase Ferrari lleva adems de lo que lleva un Coche, un caballo como smbolo, el constructor
es Minielli y el diseador es Montiveri (por decir cualquier cosa).
La clase Spider que hereda a Ferrari, adems de lo que lleva Ferrari, y de lo que lleva un Coche,
mide 5 metros y alcanza los 295Km/h.
Podramos sacar una nueva clase de Ferrari heredando Ferrari, o podramos sacar un Coche
nuevo como Mercedes heredando Coche, o incluso podramos sacar un
CocheVoladorSubmarino heredando Coche y aadiendo las caractersticas de un coche que
vuele y se sumerja.
Curso




o gratuito
En es
Coche
y cha
mast
hered
Apart
frena
volad
Y si q
las ca
La n
varia
subm
Tiene
Delfin
Coche

de Java e
ste ejemplo v
eVolador ap
asis. Ms com
til propias d
da Coche, Co
te de sus v
ar() (para el
dor submarin
quisiera hace
aractersticas
nica manera
ble que usas
marino es Del
es que saber
nConAlas es
eVoladorSub
n emulado
vemos cmo
parte de tene
mplejo aun e
e un barco,
ocheVolador
variables de
Coche), de
no).
er un CocheT
s de un Tanq
de acceder
s con new, e
lfinConAlas.
que la varia
el resultado
bmarino y na
ores L2 Ja
o se crea Coc
er alas y flap
es el CocheV
, lleva alas
rSubmarino t
instancia, t
espegar() (p
Tanque? Pue
que.
a un objeto
en el ejemplo
ble de refere
o de la here
ada ms.

va
e m a i l :
che, CocheV
ps propias de
VoladorSubm
y flaps del
tambien her
tambin he
ara el coch
es... heredar
es a travs
o podemos
encia slo p
encia de un
b r u j u l a
Volador y Coc
e un avin, h
marino, que
CocheVolad
eda ruedas,
redarn sus
e volador) e
a las propied
de una varia
ver que mi r
uede ser de
Coche y de
t o @ y a h
cheVoladorS
hereda rueda
aparte de lle
dor, y como
frenos, puer
s mtodos,
e inmersin
dades de un
able de refer
referencia a
un slo tipo
un CocheVo
2
o o . e s
Submarino, d
da, frenos, pu
evar timn,
el CocheVo
rtas y chasis
como podr
n() (para el
n Coche y le a
rencia, es de
un coche vo
o, es decir, au
Volador, el ti
2012
Pgina 42

donde
uertas
vela y
olador
.
a ser
coche
aado
ecir, la
olador
unque
ipo es
Curso




o gratuito
A la v
final.
Una
decla
A est
Coche
Como
Una v
interf
clase

de Java e
variable de r
Es decir:
variable de
arado en la re
o se le llama
eVoladorSub
o es del mism
variable de
faz. Si se dec
que implem
n emulado
referencia le
e referencia
eferencia, in
a casteo que
bmarino do
mo subtipo, e
referencia ta
clara como u
mente la inter
ores L2 Ja
e puedes asig
tambin p
cluso puede
e lo veremos
nde la varia
el compilado
ambin pued
un tipo de int
rfaz.

va
e m a i l :
gnar otros o
puede referi
hacer refere
en profund
able de refe
or no lanza e
de ser decla
terfaz puede
b r u j u l a
objetos, a me
rse a cualq
encia al subt
idad. En el e
rencia est
rror y lo ace
arada como
e referenciar
t o @ y a h
enos que sea

uier objeto
ipo declarad
jemplo vemo
referida a u
pta como co
un tipo de c
cualquier ob
2
o o . e s
a declarada
del mismo
do.
os que decla
un CocheVo
orrecto.
clase o un ti
bjeto de cua
2012
Pgina 43
como
o tipo

aro un
lador.
po de
lquier
Curso




o gratuito
En el
como
Frena
Al im
decla
Fjate
Coche
y no
mto
cdig

de Java e
ejemplo la
o CocheVola
ar.
mplementar
arados, pero
e que la
eVoladorSub
hace falta
odos de la c
go del mtod
n emulado
variable de
adorSubmar
una interfaz
el cdigo de
nica clase
bmarino no
volver a es
lase que se
do no es sufic
ores L2 Ja
referencia e
rino, ya que
z (lo habam
e los mtodo
que imple
lo escriben.
scribirlos. Es
hereda, o s
ciente para l

va
e m a i l :
est declarad
e CocheVol
mos visto ant
os abstractos
ementa los
Eso es, como
s ms, si se
sea, creando
a clase que l
b r u j u l a
da como int
ladorSubmar
tes) se debe
tiene que se
mtodos
o ya dije ant
e rescriben,
o unos nuev
lo hereda.
t o @ y a h
erfaz Frenar
rino implem
en implemen
er escrito po
es Coche,
es, que here
estaras so
vos. Esto est
2
o o . e s
r pero se ini
menta la in
ntan los m
or ti.
CocheVolad
edan sus mt
obrescribiend
t bien cuan
2012
Pgina 44

cializa
terfaz
todos
dor y
todos,
do los
ndo el
Curso




o gratuito
6.3 C
Como
siend
de Fe
NO!
En el
upcas
hacie
tiene
Ejem
Aqu
ascen
Pero
el com

de Java e
Casteo de var
o hemos vist
do el otro tip
errari a Coch
Acurdate s
l casteo exi
sting y el co
endo un cas
s que indica
plo:
vemos que s
ndente, no h
al hacerlo al
mpilador se
n emulado
riables de ref
to en el tem
po un subtipo
eVoladorSub
Es u
iempre de e
sten dos di
mpilador fun
teo) y bajar
r explcitame
se declara c1
ace falta ind
l revs (down
queja, indica
ores L2 Ja
eferencia
ma anterior, u
o, es decir, u
bmarino.
un Ferrari un
ste truco.
recciones, s
nciona explc
r en la esca
ente el caste
1 como Clase
dicar expresa
ncasting):
ar el casteo s

va
e m a i l :
un casteo co
un casteo de
n CocheVola
ubir en la e
citamente (e
ala de heren
eo.
e1 y se hace
amente el ca
se hace oblig
b r u j u l a
onsiste en ca
e Ferrari a C
adorSubmari
escala de la
es decir, no t
ncia, denom
un casteo a
steo.

gatorio.
t o @ y a h
ambiar de un
oche es pos
ino?
herencia, q
tienes que in
inado down
la Clase4. Co
2
o o . e s
n tipo a otro
sible, pero n
que se deno
ndicarle que
ncasting, don
omo la heren
2012
Pgina 45
o tipo,
o uno
omina
ests
nde si

ncia es
Curso




o gratuito
Pero,
El cas
ejecu
Por q
mism
perte
En un
mto
es qu
Clase
Ojo,
posib

de Java e
, qu pasa si
steo ahora e
utar el progra
qu ocurre e
mo subtipo?
enecen al mis
n upcasting,
odo de una c
ue ninguna
e1.
con esto n
bilidad de qu
n emulado
una vez cast
est hecho c
ama, sorpres
esto? Por qu
El compilad
smo rbol de
el nmero d
lase se haya
referencia d
o digo que
e en tiempo
ores L2 Ja
teado, quere
correctamen
sa...
el compila
dor lo nico
e la herencia
de mtodos s
sobrescrito,
de tipo Clase
el downcas
de ejecuci

va
e m a i l :
emos usar el
nte, el comp
ador no nos
o que pued
a.
se restringe,
, al contrario
e4 puede ha
sting est p
n funcione, c
b r u j u l a
mtodo de
ilador est f
ayuda y ver
de hacer es
as que no e
o que ocurre
acer llamada
prohibido. S
compilar.
t o @ y a h
otro tipo?
feliz por la a
r que Clase1
confirmar
existe la posi
con un down
as seguras a
Si el compila
2
o o . e s
aclaracin, p
1 y Clase4 so
que ambos
ibilidad de q
wncasting. El
una instanc
ador ve qu
2012
Pgina 46

ero al

on del
tipos
que un
punto
cia de
e hay
Curso




o gratuito
En es
La cla
La cla
Como
el com
o, y n
Aunq
funci

de Java e
ste ejemplo v
ase Object es
ase String es
o la referenc
mpilador ve
no da error. E
que es raro
ona.
n emulado
vemos como
s la clase de
una clase de
cia o es una c
que la refer
Esto compila
usar esto d
ores L2 Ja
o el downcast
la que deriva
erivada de O
cadena de te
rencia es una
a sin problem
de esta man

va
e m a i l :
ting si est p
an todas las
Object que co
exto, cuando
a cadena de
mas.
nera, nunca
b r u j u l a
permitido. Ex
clases en Jav
ontiene cade
hacemos do
texto, el mi
est de m
t o @ y a h
xplico el ejem
va, es la prim
enas de texto
owncasting d
smo tipo qu

s saber qu
2
o o . e s
mplo.
mera clase.
o.
de Object a S
ue hace refe
ue existe y
2012
Pgina 47
String,
rencia
como
Curso




o gratuito
6.4 Im
Al cre
comp
Por e
que v
En el
Volad
Los c
interf
que e
que t

de Java e
mplementan
ear interface
portamiento
ejemplo, si cr
vuele tenga l
ejemplo ve
dor.
omentarios
faz. @Overri
esta clase pu
todos los obj
n emulado
ndo una inter
es te asegura
de una clase
reas una inte
os mtodos
mos la impla
los aade au
ide significa
ueda volar. E
etos que vue
ores L2 Ja
rfaz
as que otro p
e.
erfaz como
que necesita
antacin for
utomticame
sobrescribir,
sos mtodos
elan podrn
va
e m a i l :
programado
Volador te
as para pode
rzosa de los
ente Eclipse
, y eso es lo q
s sern invoc
realizar las a
b r u j u l a
or seguir las
e aseguras qu
er hacer que

mtodos qu
al aceptar im
que tenemos
cados desde
acciones que
t o @ y a h
s reglas que
ue alguien q
ese objeto v
ue nos supon
mplementar
s que hacer,
otras clases
e indica la int
2
o o . e s
tu creaste p
ue cree un o
vuele.
ne usar la in
los mtodos
crear cdigo
que ya pres
terfaz.
2012
Pgina 48
para el
objeto
terfaz
s de la
o para
sumen
Curso




o gratuito
Aunq
imple
segui

Una i
hered

de Java e
que el comp
ementas, no
ir esta serie d
Proveer d
Usar las r
Declarar
declarado
adelante.
Mantene
implementac
dar otra inte
n emulado
pilador no s
quiere decir
de reglas:
de implemen
reglas de la s
las excepc
os en el mt
.
er el nombre
cin tambi
rfaz, o ms d
ores L2 Ja
se va a que
r que ests h
ntaciones no
sobrescritura
ciones no d
todo de la i
del mtodo
n puede ser
de una, y no

va
e m a i l :
ejar de que
haciendo una
abstractas d
a, es decir, de
declaradas e
nterfaz o su
de la interfa
r abstracta p
tiene que de
b r u j u l a
e no pongas
a buena imp
de todos los
ebe devolve
en los mt
ubclase. Vere
az y el mismo
por si misma
eclarar los m
t o @ y a h
s nada en l
lementacin
mtodos de
r el mismo ti
todos impla
emos cmo
o tipo o subt
, es decir, u
mtodos.

2
o o . e s
los mtodo
n, por eso ha
la interfaz.
ipo.
antados que
se hace esto
tipo.
na interfaz p
2012
Pgina 49
s que
ay que
e son
o ms
puede
Curso




o gratuito
Mien
clase
Pero
clase
Las in
Los m
modi
Recue
abstr
debe

de Java e
tras que un
s.
una interfaz
s.
nterfaces son
mtodos im
ficadores pr
erda, que e
ractas o inter
n ser sobres
n emulado
a clase slo
z no puede im
n siempre p
mplementado
ivate, final, p
extends se u
rfaces. Las c
critos.
ores L2 Ja
puede here
mplementar
blicas, aunq
os de la in
protected, o
usa para he
lases abstrac

va
e m a i l :
edar una cla
nada aunqu
que no lo dec
nterfaz, han
default.
eredar otra
ctas tienen m
b r u j u l a
se, una inte
ue una clase
clares explci
de ser p
clase, e im
mtodos no
t o @ y a h
rfaz puede h
puede imple
tamente.
blicos, no
plements se
implementa
2
o o . e s
heredar m
ementar m
puedes usa
e usa para
dos (sin cue
2012
Pgina 50
ltiples
ltiples

ar los
clases
rpo) y
Curso




o gratuito
6.5 Ti
Sobre
parm
Tamb
mto
Cuan
mto
Lo qu
de Java e
Tipos de retor
ecargar un m
metros.
bin se pued
odos) y rescri
do se crean
odo, el tipo d
ue no puedes
n emulado
rnos en cons
mtodo es cre
de sobrecarg
ibes el mto
n mtodos q
de retorno es
s hacer es re
ores L2 Ja
structores so
ear otro mt
gar un mto
do.
ue devuelve
s distinto.
scribir el m
va
e m a i l :
obrecargado
todo con el m
odo cuando
en tipos dist
todo en luga
b r u j u l a
os
mismo nomb
una clase h
tintos, segn
ar de sobrec
t o @ y a h
bre pero ace

ereda a otr

n los parme
argarlo, as s

2
o o . e s
ptando difer
ra (heredand
etros dados
sin ms:
2012
Pgina 51
rentes
do sus
en el

Curso




o gratuito
Si qui
retor
En es
de in
en tie
Otro
Aqu
del ti

6.5.1
Hay c
de Java e
ieres rescrib
rno si el tipo
ste ejemplo
t no supera
empo de ejec
ejemplo:
Main hered
po es correc
Devolviend
cinco sencilla
1. Pued

n emulado
ir el mtodo
es un subtip
int y byte so
el valor de 2
cucin.
a Uno, as q
cto.
do un valor
as reglas para
es devolver
ores L2 Ja
o en tu subcl
po de la supe
on distintos
255 que es e
ue Main aut
a devolver u
null en un
va
e m a i l :
ase, es decir
erclase.
tipos, pero p
el rango mx
tomticame
n valor.
mtodo con
b r u j u l a
r, sobrescritu
pueden ser c
ximo de byte
nte es subtip
n un objeto
t o @ y a h
ura, puedes c

casteados, e
e, puede fun

po de Uno, p
de referenc

2
o o . e s
cambiar el ti
es decir, si el
ncionar sin e
por eso el re
cia de tipo re
2012
Pgina 52
ipo de
l valor
rrores
etorno
eturn.
Curso




o gratuito de Java e
2. Pued
el eje
devo
la var

3. En un
variab
vimos

4. Si el m
vaco

5. Un m
pued
n emulado
es devolver
emplo se pue
lucin, para
riable con los
n mtodo co
ble que pued
s antes del c
mtodo usa v
. Hacer que
mtodo que u
a ser castead
ores L2 Ja
un array. Au
ede observar
indicar que s
s valores.
n tipo de ret
da ser conve
asting.
void (vaco)
devuelva un
use un objeto
do implcitam
va
e m a i l :
unque no hem
r que se inclu
se trata de u
torno primiti
ertida implci

se presume
valor es ileg
o de referen
mente al tipo
b r u j u l a
mos visto co
uye unos cor
un array, y de
vo, puedes d
tamente al t
que no devu
gal:
cia, puede d
o de retorno
t o @ y a h
mo se constr
rchetes [] al l
entro del m
devolver cua
ipo declarad
uelve nada, o
evolver cualq
.
2
o o . e s
ruye un arra
lado del tipo
todo, al inic

alquier valor
do. Esto es lo
o sea, un valo
quier tipo qu
2012
Pgina 53
y, en
o de
ializar
o
o que
or
ue




Curso gratuito de Java en emuladores L2 Java
2012
e m a i l : b r u j u l a t o @ y a h o o . e s Pgina 54

S-ar putea să vă placă și