SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
Programación avanzada
en Java
Sobrecarga de métodos
class Plano3D {
double a, b, c, d;
Plano3D (double aa, double bb, double cc, double dd) {
a = aa; b = bb; c = cc; d = dd;
}
boolean paralelo (Plano3D p) {
Vector3D u = new Vector3D (a, b, c);
Vector3D v = new Vector3D (p.a, p.b, p.c);
return u.paralelo (v);
}
boolean paralelo (Recta3D r) {
Vector3D u = new Vector3D (a, b, c);
return u.perpendicular (r.vector);
}
}
Sobrecarga de constructores
class Vector3D {
double x, y, z;
Vector3D (double xx, double yy, double zz) {
x = xx; y = yy; z = zz;
}
Vector3D (Punto3D p, Punto3D q) {
x = q.x - p.x; y = q.y - p.y; z = q.z - p.z;
}
boolean paralelo (Vector3D u) {
return (x * u.y == y * u.x) && (x * u.z == z * u.x);
}
boolean perpendicular (Vector3D u) {
return productoEscalar (u) == 0;
}
}
Llamada a métodos sobrecargados
class Recta3D {
Punto3D punto;
Vector3D vector;
Recta3D (Punto3D p, Vector3D v) {
punto = p; vector = v;
}
}
// Bloque main
Plano3D p1 = new Plano3D (2, 4, 3, 1);
Plano3D p2 = new Plano3D (1, 0, -2, 1);
Recta3D r = new Recta3D (new Punto3D (1, 0, 1),
new Vector3D (1, 1, -1));
p1.paralelo (p2);
p1.paralelo (r);
La variable this
• Definida implícitamente dentro del cuerpo de los métodos.
• Referencia al objeto sobre el que se ha invocado el método.
class Vector3D {
double x, y, z;
...
double productoEscalar (Vector3D u) {
return x * u.x + y * u.y + z * u.z;
}
double modulo () {
return (double) Math.sqrt (productoEscalar (this));
}
}
// Bloque main
Vector3D v = new Vector3D (2, -2, 1);
v.modulo ();
Variables estáticas (I)
• Similares a las variables globales de C/C++.
• Las variables estáticas pertenecen a las clases,
pero no a los objetos.
• Aunque se puede acceder desde ambos.
class CuentaCorriente {
static double interes;
}
CuentaCorriente cuenta = new CuentaCorriente ();
cuenta.interes = 0.3;
CuentaCorriente.interes = 0.2;
Variables estáticas (y II)
• Las variables estáticas son compartidas por
todos los objetos de la clase.
• La memoria para ellas se reserva al cargar la
clase en el intérprete (JVM).
CuentaCorriente cuenta1 = new CuentaCorriente ();
CuentaCorriente cuenta2 = new CuentaCorriente ();
cuenta1.interes = 0.3;
cuenta2.interes = 0.4;
System.out.println (cuenta1.interes);
Salida:
0.4
Métodos estáticos
• Similares a funciones globales de C/C++.
• Pueden ser invocados desde la propia clase y/o
desde los objetos.
class CuentaCorriente {
long numero;
static long ncuentas;
static long generarNumero () {
return ncuentas++;
}
}
CuentaCorriente cuenta = new CuentaCorriente ();
cuenta.numero = cuenta.generarNumero ();
cuenta.numero = CuentaCorriente.generarNumero ();
Métodos estáticos: Restricciones
• Pueden acceder a variables y métodos
estáticos de la misma clase.
• No pueden acceder a variables y métodos
de instancia.
• No pueden acceder a la variable this.
• Los constructores no pueden ser
estáticos.
Packages
• Conjunto de clases definidas por un
directorio.
• Objetivo: Evitar conflictos entre símbolos.
• Cada clase pertenece siempre a un
package.
• Si no se incluye ningún package para una
clase, Java la incluye en el package
DefaultPackage.
Declaración de packages
package graphics;
public class Circle {
public void paint () {
...
}
...
}
package graphics;
public class Rectangle {
public void paint () {
...
}
...
}
graphicsCircle.java graphicsRectangle.java
Utilizar clases de otro package
• Importar la clase que se necesita.
import graphics.Circle;
...
Circle c = new Circle ();
c.paint ();
...
• Importar todas las clases del package.
import graphics.*;
...
Circle c = new Circle ();
Rectangle r = new Rectangle ();
c.paint (); r.paint ();
...
Packages y directorios
directorio en CLASSPATH
Package tool.browser.graphics
Package tool.browser.graphics
Package tool.browser.graphics
• Nombre del package = Path del directorio.
• CLASSPATH: Variable de entorno con directorios donde
buscar packages.
• Packages importados automáticamente:
– java.lang, DefaultPackage, directorio actual
Control de acceso
class A {
public int x;
private int y;
public void f () { ... }
private void g () { ... }
void h () {
x = 2;
y = 6;
f ();
g ();
A a = new A ();
a.x = 2;
a.y = 6;
a.f ();
a.g ();
}
}
class B {
void h () {
A a = new A ();
a.x = 2;
a.y = 6; // Error
a.f ();
a.g (); // Error
}
}
Modalidades de acceso
• Modalidades de acceso de variables, métodos y
constructores de una clase.
• Las clases sólo pueden ser package o public.
Clase Package Subclase Cualquiera
private X
package X X
protected X X X
public X X X X
por defecto
Ejemplos de acceso (I)
class A {
int w; // package
private int x;
protected int y;
public int z;
private void f () { ... }
void h () {
w = 2;
x = 6;
y = 8;
z = 3;
f ();
}
}
class B {
void h () {
A a = new A ();
a.w = 2;
a.x = 6; // Error
a.y = 8;
a.z = 3;
a.f (); // Error
}
}
Ejemplos de acceso (II)
package p2;
class C {
void f () {
p1.A a;
p1.B b; // Error
}
package p1;
// Clase pública
public class A {
...
}
// Clase del package
class B {
...
}
Ejemplos de acceso (y III)
package p1;
public class A {
int w; // package
private int x;
protected int y;
public int z;
}
package p2;
class C {
void h () {
p1.A a = new p1.A ();
a.w = 2; // Error
a.x = 6; // Error
a.y = 8; // Error
a.z = 3;
}
}
class D extends p1.A {
void h () {
p1.A a = new p1.A ();
w = 2; a.w = 2; // Error
x = 2; a.x = 6; // Error
z = 3; a.z = 3;
a.y = 8; // Error
y = 8;
D d = new D ();
d.y = 8;
}
}
Librerías de clases
fundamentales
Cadenas de caracteres
• La clase String encapsula las cadenas y su
manipulación
• String no es un char[].
• Los literales (“…”) son convertidos implícitamente en
String.
String (char[])
String (String)
char[] chars = {'a','b','c'};
String s = new String (chars);
String s1 = "Hello";
String s2 = new String (s1);
Constructores Ejemplos de creación
Métodos de la clase String (I)
• Acceso (no existe str[n]):
String str = "abcdabc";
str.length (); // ® 7
str.charAt (4); // ® 'a'
str.substring (3, 5); // ® "da"
str.indexOf ("bc"); // ® 1
str.lastIndexOf ("bc"); // ® 5
• Manipulación (devuelven el String manipulado):
str.concat ("xyz"); // ® "abcdabcxyz"
str.toUpperCase (); // ® "ABCDABC"
str.replace ('b', 'x'); // ® "axcdaxc"
" Hola que tal ".trim (); // ® "Hola que tal"
Métodos de la clase String (y II)
• Conversión a String:
String.valueOf (2.34567); // ® "2.34567"
String.valueOf (34); // ® "34"
String.valueOf (new Plano3D ()); // ® "Plano3D@1d07be"
• Comparación:
String s1 = "abc", s2 = new String ("abc"), s3 = "abx";
s1 == s2; // ® false
s1.equals (s2); // ® true
s1.compareTo (s3); // ® -21 < 0
Entrada y salida estándar
• Entrada (Teclado) / Salida (Pantalla).
System.out, System.err
Objeto de la clase: java.io.PrintStream
Métodos: print (<cualquier tipo>), println (<cualquier tipo>), flush ()
System.in
Objeto de la clase: java.io.InputStream
Métodos: read (), read (byte []), read (byte [], int, int)

Más contenido relacionado

Similar a Sobrecarga de Métodos y Constructores.pdf

Similar a Sobrecarga de Métodos y Constructores.pdf (20)

El lenguaje C++.ppt
El lenguaje C++.pptEl lenguaje C++.ppt
El lenguaje C++.ppt
 
Jyoc java-cap06 la clase string
Jyoc java-cap06 la clase stringJyoc java-cap06 la clase string
Jyoc java-cap06 la clase string
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 
Presentacion4
Presentacion4Presentacion4
Presentacion4
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Java clases dictadas
Java clases dictadasJava clases dictadas
Java clases dictadas
 
Poo
PooPoo
Poo
 
14 tiposdemetodos
14 tiposdemetodos14 tiposdemetodos
14 tiposdemetodos
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
Programacion orientada a objetos 1
Programacion orientada a objetos 1Programacion orientada a objetos 1
Programacion orientada a objetos 1
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
02 tda1 t2018
02 tda1 t201802 tda1 t2018
02 tda1 t2018
 
Tutorial 3
Tutorial 3Tutorial 3
Tutorial 3
 
Poo 1
Poo 1Poo 1
Poo 1
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
Transformaciones modelo a modelo: ATL (ParteII)
Transformaciones modelo a modelo: ATL (ParteII)Transformaciones modelo a modelo: ATL (ParteII)
Transformaciones modelo a modelo: ATL (ParteII)
 

Último

PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrialGibranDiaz7
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesgovovo2388
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxbingoscarlet
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMONICADELROCIOMUNZON1
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOLUISDAVIDVIZARRETARA
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralsantirangelcor
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 

Último (20)

PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
CLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptxCLASe número 4 fotogrametria Y PARALAJE.pptx
CLASe número 4 fotogrametria Y PARALAJE.pptx
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
Falla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integralFalla de san andres y el gran cañon : enfoque integral
Falla de san andres y el gran cañon : enfoque integral
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 

Sobrecarga de Métodos y Constructores.pdf

  • 2. Sobrecarga de métodos class Plano3D { double a, b, c, d; Plano3D (double aa, double bb, double cc, double dd) { a = aa; b = bb; c = cc; d = dd; } boolean paralelo (Plano3D p) { Vector3D u = new Vector3D (a, b, c); Vector3D v = new Vector3D (p.a, p.b, p.c); return u.paralelo (v); } boolean paralelo (Recta3D r) { Vector3D u = new Vector3D (a, b, c); return u.perpendicular (r.vector); } }
  • 3. Sobrecarga de constructores class Vector3D { double x, y, z; Vector3D (double xx, double yy, double zz) { x = xx; y = yy; z = zz; } Vector3D (Punto3D p, Punto3D q) { x = q.x - p.x; y = q.y - p.y; z = q.z - p.z; } boolean paralelo (Vector3D u) { return (x * u.y == y * u.x) && (x * u.z == z * u.x); } boolean perpendicular (Vector3D u) { return productoEscalar (u) == 0; } }
  • 4. Llamada a métodos sobrecargados class Recta3D { Punto3D punto; Vector3D vector; Recta3D (Punto3D p, Vector3D v) { punto = p; vector = v; } } // Bloque main Plano3D p1 = new Plano3D (2, 4, 3, 1); Plano3D p2 = new Plano3D (1, 0, -2, 1); Recta3D r = new Recta3D (new Punto3D (1, 0, 1), new Vector3D (1, 1, -1)); p1.paralelo (p2); p1.paralelo (r);
  • 5. La variable this • Definida implícitamente dentro del cuerpo de los métodos. • Referencia al objeto sobre el que se ha invocado el método. class Vector3D { double x, y, z; ... double productoEscalar (Vector3D u) { return x * u.x + y * u.y + z * u.z; } double modulo () { return (double) Math.sqrt (productoEscalar (this)); } } // Bloque main Vector3D v = new Vector3D (2, -2, 1); v.modulo ();
  • 6. Variables estáticas (I) • Similares a las variables globales de C/C++. • Las variables estáticas pertenecen a las clases, pero no a los objetos. • Aunque se puede acceder desde ambos. class CuentaCorriente { static double interes; } CuentaCorriente cuenta = new CuentaCorriente (); cuenta.interes = 0.3; CuentaCorriente.interes = 0.2;
  • 7. Variables estáticas (y II) • Las variables estáticas son compartidas por todos los objetos de la clase. • La memoria para ellas se reserva al cargar la clase en el intérprete (JVM). CuentaCorriente cuenta1 = new CuentaCorriente (); CuentaCorriente cuenta2 = new CuentaCorriente (); cuenta1.interes = 0.3; cuenta2.interes = 0.4; System.out.println (cuenta1.interes); Salida: 0.4
  • 8. Métodos estáticos • Similares a funciones globales de C/C++. • Pueden ser invocados desde la propia clase y/o desde los objetos. class CuentaCorriente { long numero; static long ncuentas; static long generarNumero () { return ncuentas++; } } CuentaCorriente cuenta = new CuentaCorriente (); cuenta.numero = cuenta.generarNumero (); cuenta.numero = CuentaCorriente.generarNumero ();
  • 9. Métodos estáticos: Restricciones • Pueden acceder a variables y métodos estáticos de la misma clase. • No pueden acceder a variables y métodos de instancia. • No pueden acceder a la variable this. • Los constructores no pueden ser estáticos.
  • 10. Packages • Conjunto de clases definidas por un directorio. • Objetivo: Evitar conflictos entre símbolos. • Cada clase pertenece siempre a un package. • Si no se incluye ningún package para una clase, Java la incluye en el package DefaultPackage.
  • 11. Declaración de packages package graphics; public class Circle { public void paint () { ... } ... } package graphics; public class Rectangle { public void paint () { ... } ... } graphicsCircle.java graphicsRectangle.java
  • 12. Utilizar clases de otro package • Importar la clase que se necesita. import graphics.Circle; ... Circle c = new Circle (); c.paint (); ... • Importar todas las clases del package. import graphics.*; ... Circle c = new Circle (); Rectangle r = new Rectangle (); c.paint (); r.paint (); ...
  • 13. Packages y directorios directorio en CLASSPATH Package tool.browser.graphics Package tool.browser.graphics Package tool.browser.graphics • Nombre del package = Path del directorio. • CLASSPATH: Variable de entorno con directorios donde buscar packages. • Packages importados automáticamente: – java.lang, DefaultPackage, directorio actual
  • 14. Control de acceso class A { public int x; private int y; public void f () { ... } private void g () { ... } void h () { x = 2; y = 6; f (); g (); A a = new A (); a.x = 2; a.y = 6; a.f (); a.g (); } } class B { void h () { A a = new A (); a.x = 2; a.y = 6; // Error a.f (); a.g (); // Error } }
  • 15. Modalidades de acceso • Modalidades de acceso de variables, métodos y constructores de una clase. • Las clases sólo pueden ser package o public. Clase Package Subclase Cualquiera private X package X X protected X X X public X X X X por defecto
  • 16. Ejemplos de acceso (I) class A { int w; // package private int x; protected int y; public int z; private void f () { ... } void h () { w = 2; x = 6; y = 8; z = 3; f (); } } class B { void h () { A a = new A (); a.w = 2; a.x = 6; // Error a.y = 8; a.z = 3; a.f (); // Error } }
  • 17. Ejemplos de acceso (II) package p2; class C { void f () { p1.A a; p1.B b; // Error } package p1; // Clase pública public class A { ... } // Clase del package class B { ... }
  • 18. Ejemplos de acceso (y III) package p1; public class A { int w; // package private int x; protected int y; public int z; } package p2; class C { void h () { p1.A a = new p1.A (); a.w = 2; // Error a.x = 6; // Error a.y = 8; // Error a.z = 3; } } class D extends p1.A { void h () { p1.A a = new p1.A (); w = 2; a.w = 2; // Error x = 2; a.x = 6; // Error z = 3; a.z = 3; a.y = 8; // Error y = 8; D d = new D (); d.y = 8; } }
  • 20. Cadenas de caracteres • La clase String encapsula las cadenas y su manipulación • String no es un char[]. • Los literales (“…”) son convertidos implícitamente en String. String (char[]) String (String) char[] chars = {'a','b','c'}; String s = new String (chars); String s1 = "Hello"; String s2 = new String (s1); Constructores Ejemplos de creación
  • 21. Métodos de la clase String (I) • Acceso (no existe str[n]): String str = "abcdabc"; str.length (); // ® 7 str.charAt (4); // ® 'a' str.substring (3, 5); // ® "da" str.indexOf ("bc"); // ® 1 str.lastIndexOf ("bc"); // ® 5 • Manipulación (devuelven el String manipulado): str.concat ("xyz"); // ® "abcdabcxyz" str.toUpperCase (); // ® "ABCDABC" str.replace ('b', 'x'); // ® "axcdaxc" " Hola que tal ".trim (); // ® "Hola que tal"
  • 22. Métodos de la clase String (y II) • Conversión a String: String.valueOf (2.34567); // ® "2.34567" String.valueOf (34); // ® "34" String.valueOf (new Plano3D ()); // ® "Plano3D@1d07be" • Comparación: String s1 = "abc", s2 = new String ("abc"), s3 = "abx"; s1 == s2; // ® false s1.equals (s2); // ® true s1.compareTo (s3); // ® -21 < 0
  • 23. Entrada y salida estándar • Entrada (Teclado) / Salida (Pantalla). System.out, System.err Objeto de la clase: java.io.PrintStream Métodos: print (<cualquier tipo>), println (<cualquier tipo>), flush () System.in Objeto de la clase: java.io.InputStream Métodos: read (), read (byte []), read (byte [], int, int)