Está en la página 1de 9

Clases

La unidad fundamental de programación 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 ejecución crea y manipula
(mediante llamadas a métodos) 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 definición de clase comprende:
n Cuando se invoca un método de un objeto, se
n Cabecera
mira en el código 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 Métodos:
w Funciones
w Constructores
w Bloques de inicialización static
w Finalizador

Java Clases y objetos 3 Java Clases y objetos 4

Definición de una clase Modificadores de clase


[Modificadores] class
[Modificadores] class NombreClase
NombreClase [extends
[extends SuperClase]
SuperClase] {{
// definición
// definición 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
// definición
// definición dede los
los métodos
métodos 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 método1
método1 public
}} n class C extends superclase // la clase hereda de
tipoDevuelto nombreMetodo2 (listaParametros) {{
tipoDevuelto nombreMetodo2 (listaParametros)
//instrucciones del
del método2
método2 otra
//instrucciones
w Sólo herencia simple (una sóla 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 métodos
métodos de
de Rectángulo
Rectángulo
// 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 métodos 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 Creación de instancias


referencias (objetos)
Operador new
La declaración de tipos primitivos reserva
memoria n Crea una instancia o ejemplar de la
La declaración 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
Creación de instancias Creación de instancias
(objetos) (objetos)
Clase int num
int num == 5;
5;
Rectángulo // crea
// crea una
una referencia
referencia
Rectangulo rect;
Rectangulo rect;
rect == new
rect new Rectangulo();
Rectangulo();
Rectangulo otroRect;
Rectangulo otroRect;
Rectángulo e = new Rectángulo() 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 Rectángulo
ancho
objeto
alto

Java Clases y objetos 13 Java Clases y objetos 14

Asignación Objetos
Por valor

Podemos instanciar varios objetos de una clase


copia
int i =10; int i 10 int j 10
int j =i;
Los métodos 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

Creación 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 método se deben inicializar. Éstas
no se inicializan automáticamente.
Java Clases y objetos 17 Java Clases y objetos 18

3
Acceso a los atributos de un
objeto Declaración de métodos
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 método
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

Declaración de métodos Parámetros


// calcula
// calcula lala superficie
superficie yy lala devuelve
devuelve como como unun
número entero
número entero
Sintaxis
int calcularSuperficie(){
int calcularSuperficie(){ El lenguaje Java sólo pasa los argumentos de
int area;
int area; tipos básicos por valor.
area == ancho
ancho ** alto;
alto;
area Cuando se pasa un objeto instanciado como
return area;
area;
return argumento a un método, 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 método 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 métodos Llamada a los métodos


public class
public class Rectangulo
Rectangulo {{
int x;x; ………..
………..
n La invocación a los métodos 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
Ocultación de datos Ocultación de datos
pon() La palabra reservada private permite
métodos una accesibilidad total desde cualquier
públicos
método de la clase, pero no desde
cont : int
fuera de esta.
cima() rep : int array quita()

métodos
privados
esVacio()

Java Clases y objetos 25 Java Clases y objetos 26

Ocultación de datos Ocultación de datos


public class Date { Como los datos son inaccesibles, la única
private int day, month, year; manera de leer o escribirlos es a través de los
métodos 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; // día 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
}

Ocultación de datos Encapsulación


Ocultar los detalles de implementación de
la clase.
Regla: definir datos privados y métodos
accesores y modificadores públicos Fuerza al usuario a utilizar una interfaz
para acceder a los datos.
Hace que el código sea más fácil de
mantener.

Java Clases y objetos 29 Java Clases y objetos 30

5
Acceso a clases Sobrecarga de métodos
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 compilación
compilación (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 Método que inicializa el objeto en su creación int x;
int x;
n Se llama automáticamente 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 parámetros y=y1;
y=y1;
por defecto que deja de estar disponible cuando ancho=w;
ancho=w;
se añade algún 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 más 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(); parámetros
System.out.println( "Superficie:
System.out.println( "Superficie: ""
++ area
area );
); Pueden llamar al constructor del padre
………….
…………. n super(argumentos);
}} w Debe ser la primera instrucción 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 método
nombre = n;
new Xxx().
salario = s; }
public Empleado(String n){ La definición 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 método de cualquier clase se int ancho;
int ancho;
refiere a la instancia actual int alto;
int
// constructor
constructor
alto;
//
w Permite parámetros 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 pública o como
nuevo == new
nuevo new Rectangulo(6,
Rectangulo(6, 9);
9); privada.
rect.mostrarValores();
rect.mostrarValores();
………….
………….
Si está marcada como pública, 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

Métodos (static) de la clase Métodos (static) de la clase


public class GeneralFunction {
Un método 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 métodos estáticos no se puede public void método () {
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

Métodos (static) de la clase Inicializadores estáticos


Los métodos estáticos, sólo pueden acceder a Bloques de inicialización estática
sus propios argumentos y a las variables Una clase puede tener código estático que no
estáticas. exista dentro del cuerpo de un método.
El método main() es estático, porque la El bloque estático se ejecuta sólo una vez,
aplicación 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 métodos estáticos no se pueden aparecen.
sobreescribir

Java Clases y objetos 47 Java Clases y objetos 48

8
Inicializadores estáticos
Inicializadores estáticos
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 métodos marcados con esta
Si se aplica esta palabra a una palabra no se pueden
clase, esa clase no puede sobreescribir.
tener subclases. Los métodos marcados como estáticos
o privados son finales
Por ejemplo, la clase automáticamente.
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