Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Métodos:
Las clases constan de dos elementos principales: variables de instancia y métodos, estos son
bloques de código con nombre, tipo de acceso, tipo de retorno y una lista de parámetros.
Todo el código ejecutable en Java se sitúa dentro de un método, el cual consta de dos partes:
cabecera y cuerpo.
Sintaxis:
tipo nombre (lista de parámetros){ // cabecera
// cuerpo del método
}
Si el método no devuelve un valor, su tipo de retorno debe ser void. El nombre del método
puede ser cualquiera distinto de aquellos ya utilizados y no puede ser igual a una palabra
reservada Java.
La lista de parámetros es una secuencia de parejas de identificadores y tipos de datos
separados por comas, los parámetros son variables que reciben el valor de los argumentos
pasados al método cuando este es llamado, si el método no tiene parámetros entonces la
lista estará vacía.
Ejemplo:
public class Saludo{
//otras partes de la clase
void saludoBienvenida(){
System.out.println("¡Hola! ");
System.out.print(" Método llamado saludoBienvenida");
System.out.println(" que contiene tres sentencias ");
}
Ejemplo 9.1:
El método calcularArea() de la clase Rectangulo se utiliza para devolver el área de un rectángulo.
public class PruebaRetorno{
public static void main(String ar[]){
Rectangulo r = new Rectangulo(3.0,7.0);
System.out.println(" El área es " + r.calcularArea());
}
}
class Rectangulo{
private double base, altura;
La llamada a un método desde otro objeto se realiza con el nombre del objeto, el selector
punto (.) y el nombre del método con sus argumentos actuales.
Sintaxis:
objeto.nombreMetodo(lista de argumentos actuales);
Hay métodos como el método static que no son de los objetos sino de la clase, la llamada a
uno de estos métodos se hace con el nombre de la clase, el selector punto (.) y el nombre
del método con sus argumentos actuales.
Sintaxis:
nombreClase.nombreMetodo(lista de argumentos actuales);
Ejemplo 9.2:
En la clase Matem se define un método que calcula el factorial de un entero, el cual es static; por consiguiente,
se invoca con el nombre de ésta: Matem.factorial(); la clase principal llama a factorial() para enteros de
1 a 15.
class Matem{
static long factorial (int n){
long p = 1;
for (int i = 2; i<=n; i++)
p *= i;
return p;
}
// ...
}
Ejemplo 9.3:
En un paquete se declaran varias clases, tienen métodos con distintos niveles de acceso.
package dolmen;
import dolmen.*;
public class Prueba{
public static void main(String ar[]){
Segunda st = new Segunda(); // crea un objeto
Primera pt = new Primera(); // crea objeto
st.balsas(); // llamada correcta por tener acceso público
pt.homero(); // llamada correcta por tener acceso público
pt.salustio(); // error, el acceso es el paquete dolmen
}
}
int x,y;
x = cuadrado(10); // se pasa el valor 10; x es igual a 100
y = cuadrado(15); // se pasa el valor 15; x es igual a 225
y = 5;
x = cuadrado(y); // se pasa el valor de y; x es igual a 25
Ejemplo 9.4:
El listado de la clase principal PorValor muestra el mecanismo de paso de parámetros por valor; se puede
cambiar la variable del parámetro en el método, pero su modificación no puede salir del método.
class PorValor{
public static void main(String[] a){
int n = 10;
System.out.println("Antes de llamar a demoLocal, n = " + n);
demoLocal(n);
System.out.println("Después de la llamada, n = " + n);
}
Julian(){
fecha = "01-Jan-2001";
dias = 1;
}
void mostrar(){
System.out.println("Fecha actual: " + fecha+ "\t Dias = " + dias);
}
// ...
}
// clase principal
class PorValorObjeto{
public static void main(String[] a){
// crea objeto de la clase Julian
Julian jan = new Julian();
// muestra valores actuales
System.out.println("Propiedades del objeto en la creación.");
jan.mostrar();
// llamada a método que modifica el objeto
modifica(jan);
System.out.println("Propiedades del objeto modificado.");
jan.mostrar();
}
static void modifica(Julian obj){
// se modifican las variables instancia de obj
p.fecha = "01-Feb-2001";
p.dias = 32;
}
}
La ejecución muestra la salida:
Propiedades del objeto en la creación.
Fecha actual: 01-Jan-2001 Dias = 1
Propiedades del objeto modificado.
Fecha actual: 01-Feb-2001 Dias = 32
Ejemplo 9.6:
El programa PruebaFigura calcula el área y el perímetro de las figuras geométricas Circulo y Rectangulo.
La implementación de las clases y métodos abstractos de la jerarquía cuya superclase es Figura se encuentra
en el paquete figuras.
import figuras.*;
Ejemplo 9.7:
Se define la clase llamada sobrecarga con cuatro métodos de nombre prueba sobrecargados, diferenciándose
entre ellos por el número/tipo de los parámetros; main() llama a cada uno de ellos.
El método prueba() se sobrecargó cuatro veces; la primera versión no tiene parámetros; la segunda, 1 entero;
la tercera, 2 enteros y la cuarta, 3 de tipo double.
class Sobrecarga{
public void prueba(){
System.out.println(" Método sin argumentos.");
}
public Racional(){
numerador = 0;
denominador = 1;
}
public Racional(int numerador, int denominador){
this.numerador = numerador;
this.denominador = denominador;
}
public Racional(Racional r){
numerador = r.numerador;
denominador = r.denominador;
}
public Racional sumar(Racional r2){
Racional suma = new Racional(numerador + r2.numerador, denominador
+ r2.denominador);
return suma;
}
Al crear objetos Racional se puede hacer uso de un constructor u otro según se desee inicializar; en este
programa se crean objetos y se muestran por pantalla.
class DemoRacional{
public static void main(String [] a){
Racional r1,r2,r3;
r1 = new Racional(); // crea número racional 0/1
r2 = new Racional(1,5); // crea número racional 1/5
r1 = new Racional(r2); // crea racional igual que r2
r3 = r2.sumar(r1);
System.out.print("r1 = "); r1.mostrar();
System.out.print("r2 = "); r2.mostrar();
System.out.print("r1+r2 = "); r3.mostrar();
}
}
Las variables las inicializa automáticamente la compilación de la clase, el valor inicial depende
de su tipo, las de tipo numérico (int, float, double) se inicializan a cero, las de tipo
boolean (false, true) a false, los array se inicializan a null.
for (k = 0; k < n; ){
p *= v[k];
k += 2;
}
return p;
}