Está en la página 1de 9

Clases

La unidad fundamental de programacin en Java


es la clase
Java: Clases y Objetos Un programa Java est formado por un conjunto
de clases
Una clase es una plantilla que describe un
conjunto de objetos con atributos y
comportamiento similares
Un programa Java en ejecucin crea y manipula
(mediante llamadas a mtodos) objetos concretos
(ejemplares o instancias)

Java Clases y objetos 1 Java Clases y objetos 2

Clases Clases
Cada objeto es un ejemplar de una clase
Una definicin de clase comprende:
n Cuando se invoca un mtodo de un objeto, se
n Cabecera
mira en el cdigo de su clase las acciones a estado del objeto
Campos o atributos:
ejecutar n
w Variables
n Un objeto puede usar otros para realizar su w Constantes comportamiento
trabajo n Mtodos:
w Funciones
w Constructores
w Bloques de inicializacin static
w Finalizador

Java Clases y objetos 3 Java Clases y objetos 4

Definicin de una clase Modificadores de clase


[Modificadores] class
[Modificadores] class NombreClase
NombreClase [extends
[extends SuperClase]
SuperClase] {{
// definicin
// definicin de
de los
los atributos
atributos de
de la
la clase
clase Modificadores:
tipo1 identificador1;
tipo1 identificador1; n public class NombreClase // visible fuera del
tipo2 identificador2;
tipo2 identificador2; paquete
..
.. w Normalmente la clase se almacena en un fichero
// definicin
// definicin dede los
los mtodos
mtodos de
de la
la clase
clase NombreClase.java
tipoDevuelto nombreMetodo1
tipoDevuelto nombreMetodo1 (listaParametros)
(listaParametros) {{ w En un fichero .java puede haber como mucho una clase
//instrucciones del
//instrucciones del mtodo1
mtodo1 public
}} n class C extends superclase // la clase hereda de
tipoDevuelto nombreMetodo2 (listaParametros) {{
tipoDevuelto nombreMetodo2 (listaParametros)
//instrucciones del
del mtodo2
mtodo2 otra
//instrucciones
w Slo herencia simple (una sla superclase)
}}
..
.. w Si no aparece extends la clase definida hereda (es una
subclase) de un objeto general del sistema llamada
}}
Object
Java Clases y objetos 5 Java Clases y objetos 6

1
Variables, objetos y
Modificadores de clase referencias
public class
public class Rectangulo{
Rectangulo{
int x;
int x; Una variable de un determinado tipo
int y;
int y;
int ancho;
int ancho; simple proporciona
int alto;
int alto; w Capacidad para almacenar un valor simple
// faltan
faltan los
los mtodos
mtodos de
de Rectngulo
Rectngulo
// w Un conjunto predifinido de operadores
}}

Object

Rectangulo

Java Clases y objetos 7 Java Clases y objetos 8

Variables, objetos y Variables, objetos y


referencias referencias
Un objeto de una determinada clase
proporciona
n Capacidad para almacenar diversos valores
(atributos) num 5
int num = 5;
n Define su propio conjunto de mtodos para operar
sobre las instancias o ejemplares de esa clase Rectangulo rect; rect null
n Cuando se declara un objeto de una clase se crea
una referencia a una instancia de dicha clase
w Incialmente toma el valor null porque no existe objeto al
que referirse
w No son punteros con los que se pueda trabajar
directamente

Java Clases y objetos 9 Java Clases y objetos 10

Variables, objetos y Creacin de instancias


referencias (objetos)
Operador new
La declaracin de tipos primitivos reserva
memoria n Crea una instancia o ejemplar de la
La declaracin de tipos no primitivos no clase indicada y devuelve una
reserva memoria. referencia a dicho objeto
Los objetos declarados no son objetos, sino n Se reserva espacio de memoria
punteros a objetos. para los datos del objeto
Antes de utilizar un objeto dentro del w Un ejemplar es una copia individual de
programa es necesario reservar el espacio la plantilla de la clase que tiene su
necesario propio conjunto de datos

Java Clases y objetos 11 Java Clases y objetos 12

2
Creacin de instancias Creacin de instancias
(objetos) (objetos)
Clase int num
int num == 5;
5;
Rectngulo // crea
// crea una
una referencia
referencia
Rectangulo rect;
Rectangulo rect;
rect == new
rect new Rectangulo();
Rectangulo();
Rectangulo otroRect;
Rectangulo otroRect;
Rectngulo e = new Rectngulo() otroRect = rect;
otroRect = rect;
// otroRect
otroRect sese refiere
refiere al
al num 5
//
mismo
mismo
// rectangulo que rect rect
// rectangulo que rect
x
e y
otroRect
Referencia al Instancia de Rectngulo
ancho
objeto
alto

Java Clases y objetos 13 Java Clases y objetos 14

Asignacin Objetos
Por valor

Podemos instanciar varios objetos de una clase


copia
int i =10; int i 10 int j 10
int j =i;
Los mtodos disponibles son los mismos

getName setName getName setName getName setName

Mrs. Edna Smith Mr. J McDonald Mrs. T Hughes


Por Referencia
12 Acacia Avenue 14 High Street 27 Fern Cresent

Employee e = new
Employee() Employee e Employee x
copia
Employee x = e; la referencia
sendJunkMailTo sendJunkMailTo sendJunkMailTo

Java Clases y objetos 15 Java Clases y objetos 16

Creacin de instancias o Acceso a los atributos de un


ejemplares objeto
Cuando se crea un objeto, las variables miembro (atributos)
se inicializan al reservar memoria con los siguientes valores:
Desde un objeto se puede acceder a los
byte, short, int 0 atributos o miembros con la siguiente sintaxis
long 0L referenciaObjeto.atributo;
float 0.0f
double 0.0d
char '\u0000' (null)
boolean false
tipos de referencia null
Las variables locales a un mtodo se deben inicializar. stas
no se inicializan automticamente.
Java Clases y objetos 17 Java Clases y objetos 18

3
Acceso a los atributos de un
objeto Declaracin de mtodos
public class
public class Rectangulo
Rectangulo {{
int x;
int x;
int y;
int y; Funciones declaradas en la clase y que
int ancho;
ancho;
int
int alto;
int alto; determinan su comportamiento
//faltan las funciones
//faltan las funciones miembro
miembro
public static void
public static void main(String
main(String args[ args[ ])
]) {{
Rectangulo rect;
Rectangulo rect; tipoDevuelto nombreMetodo
rect == new
rect new Rectangulo();
Rectangulo(); (listaParametros) {
rect.x == 5;
rect.x 5; //instrucciones del mtodo
rect.y == 7;
rect.y 7;
rect.ancho == 4;
rect.ancho 4; }
rect.alto == 3;
rect.alto 3;
System.out.println(
System.out.println( "x "x == "" ++ rect.x
rect.x ++
yy == "" ++ rect.y
rect.y );
);
System.out.println( "ancho
System.out.println( "ancho == "" ++ rect.ancho
rect.ancho
+
+ alto
alto == " + rect.alto
" + rect.alto ); ); }} }}
Java Clases y objetos 19 Java Clases y objetos 20

Declaracin de mtodos Parmetros


// calcula
// calcula lala superficie
superficie yy lala devuelve
devuelve como como unun
nmero entero
nmero entero
Sintaxis
int calcularSuperficie(){
int calcularSuperficie(){ El lenguaje Java slo pasa los argumentos de
int area;
int area; tipos bsicos por valor.
area == ancho
ancho ** alto;
alto;
area Cuando se pasa un objeto instanciado como
return area;
area;
return argumento a un mtodo, el valor del
}}
// muestra
// muestra los
los valores
valores pero
pero nono devuelve
devuelve nadanada argumento es el puntero al objeto.
void mostrarValores(){
void mostrarValores(){ Los contenidos del objeto se pueden cambiar
System.out.println( "x
System.out.println( "x == "" ++ xx ++ "" yy == "" ++ yy );
); dentro del mtodo al que se ha llamado (los
System.out.println( "ancho
"ancho == "" ++ ancho
ancho ++ "" alto
alto
System.out.println( objetos se pasan por referencia), pero el
== "" ++ alto
alto );
);
}} puntero no se puede cambiar.

Java Clases y objetos 21 Java Clases y objetos 22

Llamada a los mtodos Llamada a los mtodos


public class
public class Rectangulo
Rectangulo {{
int x;x; ..
..
n La invocacin a los mtodos desde una int
int calcularSuperficie(){
int calcularSuperficie(){ .... .... }}
instancia se hace mediante el operador de void mostrarValores
void mostrarValores(){.}
(){.}
public static
static void
void main(String
main(String args[ args[ ])
]) {{
acceso ( . ) public
Rectangulo rect;rect;
Rectangulo
rect == new
rect new Rectangulo();
Rectangulo();
referenciaObjeto.nombreMetodo(listaArgumentos); rect.x == 5;
rect.x 5; rect.y
rect.y == 7;7; rect.ancho == 4;
rect.ancho 4;
rect.alto
rect.alto = 3; = 3;
int area
int area == rect.calcularSuperficie
rect.calcularSuperficie(); ();
rect.mostrarValores();
rect.mostrarValores();
System.out.println( "Superficie: " ++ area
System.out.println( "Superficie: " area ););
System.out.println( "x
System.out.println( "x == "" ++ rect.x
rect.x ++ yy == "" ++
rect.y );
rect.y );
System.out.println( "ancho
System.out.println( "ancho == "" ++ rect.ancho
rect.ancho ++
alto == "" ++ rect.alto
alto rect.alto ); ); }}
Java Clases y objetos 23 } Java Clases y objetos 24
}

4
Ocultacin de datos Ocultacin de datos
pon() La palabra reservada private permite
mtodos una accesibilidad total desde cualquier
pblicos
mtodo de la clase, pero no desde
cont : int
fuera de esta.
cima() rep : int array quita()

mtodos
privados
esVacio()

Java Clases y objetos 25 Java Clases y objetos 26

Ocultacin de datos Ocultacin de datos


public class Date { Como los datos son inaccesibles, la nica
private int day, month, year; manera de leer o escribirlos es a travs de los
mtodos de la clase. Esto proporciona
public void tomorrow () { consistencia y calidad.
this.day = this.day + 1; Supongamos una clase que permite acceso
}//tomorrow libre:
}//Date MyDate d = new MyDate();
public class DataUser { d.day = 32; // da no valido
public static void main (String args[]){ d.month = 2;
Date mydate = new Date();
d.day = 30; // posible pero incorrecto
mydate.day = 21; //Incorrecto
d.month = d. month +1; // no se controla
} Java Clases y objetos 27 Java Clases y objetos 28
}

Ocultacin de datos Encapsulacin


Ocultar los detalles de implementacin de
la clase.
Regla: definir datos privados y mtodos
accesores y modificadores pblicos Fuerza al usuario a utilizar una interfaz
para acceder a los datos.
Hace que el cdigo sea ms fcil de
mantener.

Java Clases y objetos 29 Java Clases y objetos 30

5
Acceso a clases Sobrecarga de mtodos
public protected package private Se puede utilizar:

public void print(int i)


Al
Al menos
menos una
una clase
clase oo interface
interface de
de una
una public void print(float i)
unidad
unidad de
de compilacin
compilacin (package)
(package) debe
debe ser
ser public void print(String i)
public
public

La lista de argumentos tiene que ser diferente.


El tipo que devuelve puede ser diferente.

Java Clases y objetos 31 Java Clases y objetos 32

Constructores Constructores
public class
public class Rectangulo{
Rectangulo{
n Mtodo que inicializa el objeto en su creacin int x;
int x;
n Se llama automticamente cuando se crea un ....
....
// constructor
constructor
objeto //
public Rectangulo(int
public Rectangulo(int x1,
x1, int
int y1,
y1, int
int
n Su nombre es igual que el de la clase y no tiene w, int
w, int h){
h){
tipo de retorno x=x1;
x=x1;
n Java proporciona un constructor sin parmetros y=y1;
y=y1;
por defecto que deja de estar disponible cuando ancho=w;
ancho=w;
se aade algn constructor alto=h; }}
alto=h;
.....
.....

Java Clases y objetos 33 Java Clases y objetos 34

Constructores Constructores
Pueden sobrecargarse
public static
public static void
void main(String
main(String args[
args[ ])
]) {{ n Una clase puede tener ms de un constructor
Rectangulo rect;
Rectangulo rect; w Si no se declara ninguno se hereda el de la superclase
rect == new
rect new Rectangulo(5,
Rectangulo(5, 7,
7, 4,
4, 3);
3); (o el de Object)
int area=rect.calcularSuperficie();
int area=rect.calcularSuperficie(); n Se puede crear un objeto con distintos tipos de
rect.mostrarValores();
rect.mostrarValores(); parmetros
System.out.println( "Superficie:
System.out.println( "Superficie: ""
++ area
area );
); Pueden llamar al constructor del padre
.
. n super(argumentos);
}} w Debe ser la primera instruccin del constructor
}} o a otros constructores de la misma clase
n this(argumentosPorDefecto );
Java Clases y objetos 35 Java Clases y objetos 36

6
Constructores El constructor por defecto
public class Empleado {
private String nombre; Existe para cualquier clase
private int salario; Permite crear una instancia de un objeto
public Empleado(String n, int s){ con el mtodo
nombre = n;
new Xxx().
salario = s; }
public Empleado(String n){ La definicin de un constructor invalida al
this (n,0); } constructor por defecto.
public Empleado( ){
this ("Desconocido"); }
} Java Clases y objetos 37 Java Clases y objetos 38

Referencia a objeto this Referencia a objeto this


class Rectangulo{
class Rectangulo{
int x;
int x;
Referencia especial que utilizada dentro ....
....
de un mtodo de cualquier clase se int ancho;
int ancho;
refiere a la instancia actual int alto;
int
// constructor
constructor
alto;
//
w Permite parmetros con igual nombre que Rectangulo(int x1, x1, intint y1, y1, int
int w,
w, int
int h){h){
Rectangulo(int
atributos x=x1;
x=x1; y=y1; ancho=w;
y=y1; ancho=w; alto=h;
alto=h; }}
w Posibilita la llamada a otros constructores // otro
// otro constructor
constructor polimorfico
polimorfico
Rectangulo(int ancho,
Rectangulo(int ancho, int int alto){
alto){
x=0;
x=0; y=0;
y=0;
this.ancho= ancho;
this.ancho= ancho;
this.alto= alto;
this.alto= alto; }}
.....
.....
Java Clases y objetos 39 Java Clases y objetos 40

Referencia a objeto this Variables (static) de la clase


public static
public static void
void main(String
main(String args[
args[ ])
]) {{
Rectangulo rect;
Rectangulo rect; Pertenece a todas las instancias de la
rect == new
rect new Rectangulo(5,
Rectangulo(5, 7,
7, 4,
4, 3);
3); clase.
rect.mostrarValores();
rect.mostrarValores();
Rectangulo nuevo;
Rectangulo nuevo; Puede estar como pblica o como
nuevo == new
nuevo new Rectangulo(6,
Rectangulo(6, 9);
9); privada.
rect.mostrarValores();
rect.mostrarValores();
.
.
Si est marcada como pblica, se puede
}} acceder desde fuera de la clase, sin
}} necesidad de una instancia de la clase.

Java Clases y objetos 41 Java Clases y objetos 42

7
Variables (static) de la clase Variables (static) de la clase
public class Count { Desde fuera de la clase se puede acceder
private int serialNumber; a una variable static si no se marca
private static int counter = 0; como private (que es lo habitual).
public Count () { Las variables de tipo static son, en
counter++; algunos aspectos, parecidas a las
serialNumber = counter; variables globales de algunos lenguajes.
} Las instancias de la clase comparten la
} variable static
Se le suele llamar variable clase.
Java Clases y objetos 43 Java Clases y objetos 44

Mtodos (static) de la clase Mtodos (static) de la clase


public class GeneralFunction {
Un mtodo static se puede llamar sin public static int add(int x, int y) {
necesidad de una instancia de la clase a return x + y; }
la que pertenecen. }
public class UseGeneral {
Con los mtodos estticos no se puede public void mtodo () {
utilizar el puntero this, ya que no se int a = 9;
necesitan instancias. int b = 10;
int c = GeneralFunction.add(a, b);
System.out.println ("add devuelve: "
+ c"; }
}
Java Clases y objetos 45 Java Clases y objetos 46

Mtodos (static) de la clase Inicializadores estticos


Los mtodos estticos, slo pueden acceder a Bloques de inicializacin esttica
sus propios argumentos y a las variables Una clase puede tener cdigo esttico que no
estticas. exista dentro del cuerpo de un mtodo.
El mtodo main() es esttico, porque la El bloque esttico se ejecuta slo una vez,
aplicacin tiene que acceder a l para cuando se carga la clase.
ejecutarse, antes de que realice cualquier Los diferentes bloques dentro de una misma
instancia.
clase, se ejecutan en el orden en que
Los mtodos estticos no se pueden aparecen.
sobreescribir

Java Clases y objetos 47 Java Clases y objetos 48

8
Inicializadores estticos
Inicializadores estticos
class Universidad { public class StaticInitDemo {
private static Vector profesores = static int i = 5;
new Vector(); static {
System.out.println ("Static code i = "+i++);
static { }
profesores.addElement("Luis"); }
profesores.addElement(Balta"); public class Test {
profesores.addElement(Antonio"); public static void main (String args []){
} System.out.println ("Main code: i =" +
} StaticInitDemo.i); }
}
imprimir:
Puede servir para inicializar algunas variables
Static code: i = 5
de clase Main code: i = 6
Java Clases y objetos 49 Java Clases y objetos 50

La palabra clase final La palabra clase final


Los mtodos marcados con esta
Si se aplica esta palabra a una palabra no se pueden
clase, esa clase no puede sobreescribir.
tener subclases. Los mtodos marcados como estticos
o privados son finales
Por ejemplo, la clase automticamente.
java.lang.String, es una Si una variable se marca con la
clase final y se ha definido palabra reservada final, se
as por motivos de seguridad. convierte en una constante. Si se
intenta cambiar el valor de
cualquier variable final,se
produce un error.
Java Clases y objetos 51 Java Clases y objetos 52

También podría gustarte