Вы находитесь на странице: 1из 18

5.

- Métodos 1

TEMARIO DE CURSO
PROGRAMACIÓN JAVA SE
Iñaki Martín

CAPÍTULO 5
rt í
MÉTODOS (FUNCIONES)
n
M a
©

ik
a
Temario de curso JavaSE


©
© Iñaki Martín

Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-SinObraDerivada 4.0 Internacional.
5.- Métodos Métodos: Resumen 2

métodos
MODIFICADOR DE ACCESO TIPO RESULTADO (Retorno)
• Public -Todo el mundo puede invocar el método • Si no da ningun resultado, debe indicarse void
• Private -Solo invocable desde dentro de la clase • Si no da un resultado, debe indicarse su tipo (int, String, Coche, double …)
• Protected - Solo invocable desde la clase y sus herederas • Si no da un resultado, debe incluir la instrucción return seguida del valor
• (sin nada) -Solo invocable desde dentro del paquete
Iñaki Martín

public static String leerCadena(String mensaje, int max) {


System.out.println(mensaje);

rt ín
a
Scanner sc = new Scanner(System.in);
String texto = sc.nextLine();

M
return texto;
©

PARAMETROS

ik
} • Para cada uno se indica el tipo y una variable
donde se recibirá el argumento

a
Temario de curso JavaSE

STATIC • No tiene que llamarse igual que el argumento


• Es obligatorio si se llama a este método desde otro método que sea static • En la práctica, recibe la información por valor si el
• Permite invocar al método sólo con el nombre de la clase tipo es primitivo, y por referencia si es un objeto (*)

métodos:
๏ Un método sobrecargado:
reglas sobrecarga

• Debe cambiar el patrón de los parámetros que recibe.


© métodos: argumentos y parámetros

public static void main(String[] args) {


int valor1 = 7;
argumentos
• Puede si quiere cambiar el tipo de valor de resultado (retorno) int valor2 = 5;
• Puede si quiere cambiar los modificadores de acceso sin sumar( valor1, valor2 );
ninguna restricción }
• Puede declara nuevas excepciones sin ninguna restricción (se
verán excepciones mas adelante) public static sumar( int a,int b ) {
System.out.println(a + b);
• Se puede sobrecargar un método en la misma clase… ¡ o en }
parámetros
una subclase !
El nombre del argumento y del parámetro NO tienen que ser iguales
(*) Siempre se recibe por valor, pero el valor en los objetos es la referencia del mismo, con lo que el paso con objetos es su referencia
5.- Métodos Creando métodos (I) 3

Qué son los métodos

๏ Si en un programa tenemos una serie de instrucciones que repiten varias veces, ¿por qué no agruparlas y
aislarlas, darles un nombre, y llamarlas para que se realicen cuando se las necesite, en vez de escribirlas
varias veces?
๏ También, a veces, se desea dividir el código en trozos aislados, bien sea por separar e identificar mejor las
Iñaki Martín

n
diferentes actividades, bien porque alguno de los trozos se desee individualizar para reutilizarse en el futuro.

๏ Esto se consigue mediante métodos.

rt í
a
๏ Un método es un miniprograma, un conjunto de instrucciones agrupadas, dentro de una clase, a las que

M
©

se da un nombre, y que realizan una determinada tarea. A este conjunto de instrucciones se le puede llamar
luego mediante su nombre.
ik
a
Temario de curso JavaSE

๏ Cuando se llama a un método, la ejecución del programa pasa al método y cuando éste acaba, la ejecución


continúa a partir del punto donde se produjo la llamada.

©
๏ Los métodos permiten, entre otras ventajas:
- separar las operaciones en módulos, aislados y más fáciles de comprender
- reutilizar código, pues si unas operativas son repetitivas, se repitan varias veces, puedo escribirlas solo
una vez y llamarlas tantas veces como quiera
5.- Métodos Creando métodos (I) 4

๏ Este ejemplo ilustra el caso de una serie de instrucciones que, inicialmente, se repiten varias veces, pero que se
han agrupado, y aislado en un método ( llamado pedir ) , al que se llama cuando se necesita

public static void main(String args[]){ public static void main(String args[]){
Scanner entrada = new Scanner(System.in); int a = 0, b = 0, c = 0, suma = 0;
Iñaki Martín

int a = 0, b = 0, c = 0, suma = 0; a= pedir();


do {

n
suma = suma + a;

í
System.out.println("Dime un numero"); b= pedir();

rt
a = entrada.nextInt(); suma = suma + b;
if (a < 0) { c= pedir();
System.out.println("no puede ser negativo"); suma = suma + c;

a
} System.out.println("la suma de los tres es " + suma);
} while (a < 0); }

M
suma = suma + a;
©

do {

ik
System.out.println("Dime un número"); public static int pedir() {
b = entrada.nextInt(); Scanner entrada = new Scanner(System.in);
if (b < 0) { int x = 0;

a
Temario de curso JavaSE

System.out.println("no puede ser negativo"); do {


}


System.out.println("Dime un número");
} while (b < 0); x = entrada.nextInt();
suma = suma + b; if (x < 0) {
do { System.out.println("no puede ser negativo");

©
System.out.println("Dime un número"); }
c = entrada.nextInt(); } while (x < 0);
if (c < 0) { return x;
System.out.println("no puede ser negativo"); }
}
} while (c < 0);
suma = suma + c;
System.out.println("la suma de los tres es " + suma);
}
5.- Métodos Creando métodos (I) 5

Crear métodos
๏ Los métodos deben escribirse dentro de una clase. Su contenido esta delimitado entre llaves ( { } ), con lo que queda
claro dónde están sus límites.
๏ El subprograma main que se ha usado hasta ahora es, en realidad, un método, uno que escribimos dentro de nuestra
clase. Es un método especial porque es el punto de entrada al programa, eso es, cuando se manda ejecutar un
Iñaki Martín

programa Java busca un método llamado main, y por ahí empieza a leer instrucciones.

ín
๏ Nuestros métodos, pues, se escribirán dentro la clase, fuera del main, y al mismo nivel que éste.

rt
๏ Al crear un método, éste es el formato que hay que usar (el contenido entre [ ] es opcional ):
Los modificadores de un método son parecidos

M a El valor de resultado (retorno) se explica en las páginas siguientes. Como es


©

a los de las variables (public, private,

ik
opcional, imaginamos por ahora que no se usa (bueno, hay que poner la palabra void,
protected). Se verán en próximos capítulos luego veremos por qué)

a
Temario de curso JavaSE

// [modificadores] [valoresultado] nombredelmétodo ( [parámetros] ) {


// … (instrucciones del método)
// }

© Los parámetros se explican igualmente en las páginas


siguientes, por ahora, lo dejamos vacío

๏ Este es nuestro primer método, consiste en algo muy simple que pide un texto por teclado y lo imprime en mayusculas:
void saludar() {
System.out.println("Dame tu nombre y yo te lo imprimo en mayusculas...");
Scanner sc = new Scanner(System.in);
String texto = sc.nextLine();
System.out.println(texto.toUpperCase());
}
5.- Métodos Creando métodos (III) 6

Llamando a métodos creados


๏ Desde un método main, u cualquier otro método, se puede llamar al método creado simplemente con el
nombre y los paréntesis (en nuestro caso, aun estarán vacíos).

saludar();
Iñaki Martín

n
๏ Leer atentamente este ejemplo, ejecutarlo y evaluar los resultados:

rt í
a
public class Inicio {
public static void main(String[] args) {

M
©

System.out.println("Primera linea del programa");

ik
System.out.println("Estas lineas se ejecutan antes de llamar al método");

saludar();

a
Temario de curso JavaSE


System.out.println("Estas lineas se ejecutan despues de llamar al método");
System.out.println("Ultima linea del programa");
}

©
public static void saludar() {
System.out.println("-- Esta es la primera linea del método que se ejecuta");

System.out.println("Dame tu nombre y yo te lo imprimo en mayusculas...");


Scanner sc = new Scanner(System.in);
String texto = sc.nextLine();
System.out.println(texto.toUpperCase());

System.out.println("-- Esta es la ultima linea del método que se ejecuta");


}
}

๏ Por supuesto, dentro de un método, se puede llamar a otro método, y dentro de este a otro…
5.- Métodos Creando métodos (IV) 7

Parámetros y valor de resultado (retorno)

๏ A los métodos, además de decirles "Haz lo que dice aquí ", se les puede decir también :
"Haz lo que dice aquí, pero cuidado que además te paso esta información por si la quieres usar”. Esto es
lo que se llama parámetros de entrada
Iñaki Martín

"Haz lo que dice aquí, pero cuidado que cuando acabes, me voy a quedar esperando que me des un

rt ín
resultado, alguna información a mi”. Esto es el llamado valor de resultado (o de retorno), y se dice que el
método da como resultado un valor, un valor de retorno

M a
๏ Se pueden combinar ambos casos, de modo que un método puede "recibir información adicional
©

ik
(parámetros) para usarla si lo desea, y a la vez, dar como resultado un valor al sitio desde donde se le
llamó inicialmente"

a
Temario de curso JavaSE


Se envían datos para que el
método los use

int solucion
© = sumarNumeros(4,6);

El método puede dar como resultado


un valor que lo usamos para
almacenarlo o cualquier otro fin
5.- Métodos Usando métodos con parámetros (I) 8

Métodos con parámetros

Crear método con parámetros

๏ Cuando un método necesita información, y no puede acceder a ella, puede pedir que ser le envíe dicha
información por medio de los parámetros de entrada.
Iñaki Martín

๏ ¿Cómo se definen los parámetros? En el método, cuando se escribe en la clase se debe especificar (entre
los paréntesis) para cada parámetro:
✴ tipo de dato que se espera recibir en el futuro
rt ín
nombre interno con el que vamos a llamar a lo que venga
a

M
©

ik
➡ Ejemplo: void mimetodo ( String unavariable ){
...

a
Temario de curso JavaSE

} tipo de dato del parámetro nombre del parámetro


๏ Se pueden poner varios parámetros separados por coma, y pueden ser de diferente tipo:
Ejemplo:
©
➡ void mimetodo ( String unavariable, Coche uncoche){
...
}

๏ El tipo de dato puede ser un tipo primitivo, o una clase Java o propia (depende de lo que se desee recibir)
➡ Ejemplo: void mimetodo ( String unavariable, int otravar ){

}
5.- Métodos Usando métodos con parámetros (I) 9

๏ Ejemplo: Imaginemos que al método que se vio antes que leía un String por teclado, le vamos a añadir que
antes de hacer esta petición, muestre un mensaje, pero no siempre el mismo, sino el texto que se le pase
como parámetro:

// Método que recibe un string como parámetro, lo imprime y luego pide


Iñaki Martín

// por teclado una cadena, que tambien imprime


public static void leerCadena(String mensaje) {
System.out.println(mensaje);

rt ín
a
Scanner sc = new Scanner(System.in);
String texto = sc.nextLine();

M
©

System.out.println(texto);

ik
}

a
Temario de curso JavaSE


๏ Se denomina firma de un método a la composición de:

©
‣ nombre del método
‣ tipo de los parámetros.
En el método anterior, la firma es pues
leerCadena(String mensaje)

๏ La firma de un método no incluye, por lo tanto, ni el valor de resultado


(retorno) ni los modificadores
5.- Métodos Usando métodos con parámetros (II) 10

Invocar (llamar) a método con parámetros


๏ A la hora de llamar a un método con parámetros, se pone a su nombre, y entre paréntesis, se le envían los
valores que correspondan con los parámetros esperados. A estos valores se les llama argumentos
๏ Aquí NO se tiene que indicar el tipo de dato enviado (el propio dato ya es de algún tipo…).
El tipo de dato solo se indica cuando se fabrica el método, de modo que así decide qué tipo de dato es el que espera recibir (también
Iñaki Martín

afecta al principio de sobrecarga, pero eso se verá más adelante)

public class Inicio {


public static void main(String[] args) {

rt ín
a
// Llamada al método NO llevan el tipo de dato
sumar( 3 , 4 ); argumentos

M
}
©

// Declaración del método


public static void sumar ( int a,int b ) {
ik parámetros
SI llevan el tipo de dato

a
Temario de curso JavaSE

System.out.println(a+b); Es como si dentro del método, al principio, estuvieran las lineas


} a = 3;
} b = 4;

©
public static void main(String[] args) { argumentos
๏ No tienen nada que ver la variable con la que se int valor1 = 7;
int valor2 = 5;
llama a un método (argumento), con la variable sumar( valor1, valor2 );
que recibe el valor del método (parámetro), }

pueden llamarse igual o no, no tiene importancia, son public static sumar( int a,int b ) {
System.out.println(a + b);
parámetros
variables diferentes. }

El argumento le pasa su valor a la variable parámetro,


y ésta se usa dentro del método

A menudo se usan indistintamente las palabras parámetros y argumentos, deberían distinguirse cómo se ha explicado.
También se llaman “parámetros actuales” a los argumentos, y “parámetros formales” a los parámetros. Por no complicar mucho al alumno, se
puede usar en estos apunte, sobre todo en los primeros capítulos, el término parámetro para ambos elementos.
5.- Métodos Usando métodos con parámetros (II) 11

๏ Cuando se usa un método con argumentos, al indicar el argumento, se puede


‣ escribir un valor explícito (un número, una cadena) o
‣ escribir una variable (que contiene el valor a pasar).
public class Inicio {
public static void main(String[] args) {
Iñaki Martín

// opcion 1, pasamos al método una variable (objeto) de tipo String

n
String unacadena = "Introduzca un texto, por favor:";

í
leerCadena(unacadena);

rt
// opcion 2, pasamos al método un String directamente

a
leerCadena("Introduzca otro texto, por favor:");
}

M
©

// Método que recibe un string como parámetro (o argumento), lo imprime y luego pide

ik
// por teclado una cadena, que tambien imprime
public static void leerCadena(String mensaje) {
System.out.println(mensaje);

a
Temario de curso JavaSE

Scanner sc = new Scanner(System.in);


String texto = sc.nextLine();
System.out.println(texto);
}
}

CUIDADO ©
Si desde dentro de un método con el modificador static se llama a otro método, o se usa
un atributo de clase, el método y el atributo llamados también han de tener el
modificador static (se explicará el por qué más adelante)
Esto ocurre por tanto con todos los métodos static, y recordar que main es uno de ellos,
así que todo método invocado desde main ha de ser static
5.- Métodos Usando métodos con parámetros (III) 12

Métodos con más de un parámetro

๏ Vamos a coger el método de ejercicios anteriores, public static void leerCadenaAcotada(String mensaje, int max) {
que elida una cadena por consola, y vamos a hacer System.out.println(mensaje);
Scanner sc = new Scanner(System.in);
que reciba dos parámetros, además del mensaje String texto = sc.nextLine();
if (texto.length() > max) {
que ya tenía, un int que usaremos para validar que System.out.println("Cadena muy larga, maximo : "+ max);
} else {
Iñaki Martín

la cadena que se lea por teclado no sea muy larga System.out.println(texto);

n
(el int será el número máximo de caracteres que se

í
}

rt
}
puedan leer). El nuevo método se llamara
leerCadenaAcotada:

M a Los parámetros siempre en el orden correcto, con


©

En este caso, cuando se llama desde el programa principal con

ik
el tipo correcto, y el número correcto de ellos

leerCadenaAcotada("Introduzca un texto", 20);

a
Temario de curso JavaSE


el programa principal dice: “Llamar a un método llamado leerCadenaAcotada y ADEMÁS, le envió esta
información: “Introduzca un texto” y 20 (UN STRING, Y UN INT)”
y luego buscará si realmente existe un método que se llame así y que:

©
• tenga esos parámetros, solo dos, y
• con esos tipos de datos, y
• en ese orden.

๏ Esto es una llamada correcta: leerCadenaAcotada("Introduzca un texto", 20);

leerCadenaAcotada(20, “Introduzca un texto");


๏ Estas, son incorrectas
leerCadenaAcotada("Introduzca un texto", 20, 1000);
5.- Métodos Usando métodos con resultado (I) 13

Métodos con valor de resultado

CREAR el método con valor de resultado

๏ Para definir un valor de resultado (retorno) en un método, hay que hacer dos cosas:
✴ En la definición del método, poner delante del nombre del método
Iñaki Martín

un indicador de cual es el tipo de dato que va a tener el valor de


resultado.
✴ Dentro de las instrucciones del método debe haber una nueva

rt ín public int sumar(int a,int


int resultado = a+b;
b){

a
return resultado;
instrucción que sea }

M
return valorderesultado
©

ik
donde return es una palabra clave de java, y valorderesultado, lo
que queremos dar como resultado al programa que ha llamado al

a
Temario de curso JavaSE

método.


๏ la palabra clave void se debe incluir si nuestro método no ha de devolver nada como resultado.

resultado alguno).
๏ Cambiamos el método
©
void significa “no da ningún resultado” (es lo que pasaba en nuestros métodos anteriores, no daban

// Método que recibe un string como parámetro, lo imprime y luego pide


de leer, ahora nos da // por teclado una cadena, que da como resultado
como resultado la public static String leerCadena(String mensaje) {
cadena que ha leído System.out.println(mensaje);
(este ejemplo no valida ya el Scanner sc = new Scanner(System.in);
String texto = sc.nextLine();
tamaño de la cadena como el
return texto;
anterior): }
5.- Métodos Usando métodos con resultado (I) 14

Ejecutar un método con valor de resultado

๏ Para llamar a un método que tiene un valor de resultado, hay que considerar que el método, tras ejecutarse,
se convierte en una información, la que el método da como respuesta.
๏ Es como cualquier operación, que tambien da una respuesta. Si yo escribo
Iñaki Martín

4 + 8

rt
el programa dirá “vale, ok, son 12…. ¿¿¿ qué hago con ese resultado, con ese 12 ???”
ín
Evidentemente, lo que solemos hacer es guardar la respuesta en alguna variable, imprimir la respuesta….
int numero = 4 + 8;

M a
©

ik
System.out.println(4 + 8);

a
Temario de curso JavaSE

๏ De igual modo, un método que tiene un valor de resultado, al acabar, da como resultado una información


(la que hay tras la instrucción return antes vista), ”retorna” un valor, por lo que hay que hacer algo con ella.
๏ Algunos ejemplos de como llamar al método leerCadena desde el programa main: Llamada al método que devuelve un

©
valor y lo guardo en una variable

String cadenaleida = leerCadena("Introduzca un texto, por favor:") ; Llamada al método que devuelve un
System.out.println("La cadena leida es : " + cadenaleida) ; valor y lo imprimo

System.out.println("La cadena leida es : " + leerCadena("Introduzca un texto, por favor:") );

Temas avanzados Creación de métodos propios como utilidades


Consejo: Dado el (aparentemente) errático funcionamiento de Scanner, sería una buena práctica hacer métodos como estos para leer por
teclado con Scanner (un método para leer un String, otro para un int, y más si hace falta). Como el objeto de Scanner creado en el método se
destruye al salir del método, evitamos los problemas de lecturas seguidas como los comentados anteriormente.
5.- Métodos Usando métodos con resultado (II) 15

Consideraciones a los valores de resultado y parámetros de un método

๏ Si un método ha de dar como resultado un valor, y no tiene orden boolean ponerColor (String parámetroColor) {
return, falla. También falla si el compilador prevé que puede que boolean respuesta;
if (parámetroColor.equals ("Amarillo")) {
no se llegue nunca a una orden return. Por ejemplo, este respuesta = true;
return respuesta;
método falla al compilar. }
Iñaki Martín

}
¿Por qué? porque si se llama al método y se le pasa un

ín
parámetro que no sea “Amarillo”, no se cumple la condición del if, El parámetro del método indica que se debe recibir

rt
con lo que el return no se ejecuta, y no hay otro return… un valor de tipo array (int [] ) y el nombre con el que
se usará dentro del método (arr)

๏ Un array se comporta como cualquier tipo de dato, por lo tanto

M a
©

public int[] nuevoarray( int[] arr

ik
) {
puede ser usado como argumento o como valor de resultado int[] otroarr = new int [1];
• Como argumento se le pasa el nombre del array

a
otroarr[0]= 65;
Temario de curso JavaSE

• como valor de resultado, se define el tipo del array return otroarr;


Recordar que en un array de int llamado X, }
- X es el nombre del array Al definir el método, el tipo
de dato que devuelve es el

©
- int[] es el tipo de la variable X // Llamada al método desde fuera
tipo del array: int[]
- X[0] es un elemento del array int[] unarr = new int [2];
int[] otroarra =
El valor devuelto por el nuevoarray(unarra);
método debe ser un array
(su nombre)

public String notas () {


๏ El valor de resultado puede ser un tipo objeto. return null;
En tal caso, null también es válido como valor de resultado }
Si el valor de resultado es tipo objeto, se puede dar como resultado cualquier objeto que se puede convertir implícitamente en ese tipo (cosas que
se analizarán al ver Herencia e Interfaces, es válido para ambos)

public List ordenar (List as){ return new ArrayList(); }


5.- Métodos Sobrecarga 16

Sobrecarga

๏ Esta técnica permite que existan varios métodos con el mismo nombre, normalmente, bien por que:
‣ se quiere que actúen de modo diferente según los parámetros que lleven
‣ se quiere que hagan lo mismo, pero que funcionen con cualquier tipo de parámetro.
Esto se ve en muchísimos métodos de Java base, cuando un método hace lo mismo independientemente de que el parámetro que
Iñaki Martín

se le pase sea String, int, boolean u otro tipo. Un ejemplo claro es el método archiusado hasta ahora, println() (con System.out). Este

ín
método funciona tanto si se le pasa un String, como un int, como un float o un boolean, y esto es así porque realmente existen

rt
definidos (ya se verá dónde) los métodos: println(String k) {…}
println(int k) {…}

a
println(boolean k) {…}
……

M
©

Así, si se llama a println con un argumento String, se ejecuta el primero de los métodos, si se llama con un argumento int, se

ik
ejecuta el segundo, si se llama con un boolean, se ejecuta el tercero… y todos ellos tienen la misma funcionalidad.

a
Temario de curso JavaSE

๏ Para poder sobrecargar un método han de tener diferente firma, esto es, deben ser diferentes el número, o el


tipo, o el orden de los parámetros.
๏ El tipo del resultado de los métodos no influye en la sobrecarga, puede ser el mismo o distinto, es indiferente.

public int
public String test ()
public int
©
๏ Ejemplos: Estas declaraciones de métodos si pueden coexistir en la misma clase:
test (int a) { … }
{ … } 
test (String s) { … } 
En java no existe sobrecarga de operadores, solo
una excepción, y está ya implementada por el
compilador, que es “+”, que vale para sumar
pero este no puede añadirse números y para concatenar cadenas.
public int test (int z) { … }

Esto es fácil de entender si pensamos como piensa el traductor de Java a la hora de ejecutar un programa. Si queremos tener en
nuestra clase dos métodos con la misma firma, cuando luego desde el main u otro método quisiéramos llamar a uno de estos métodos,
el compilador de Java buscaría el método y encontraría dos iguales .... ¿A cuál de ellos habría de invocar? No podría saberlo.…
5.- Métodos Parámetros Variables (VarArgs) (I) 17

Temas avanzados Parámetros variables (var-args) (I)

๏ Hemos visto que un método puede recibir varios parámetros, pero siempre un numero fijo de ellos.
๏ Si el número de parámetros no es conocido, se puede pasar un array (o colección) como parámetro, como en este ejemplo:
public String concatenar(String [] cadenas) {
String res = "";
for (int i=0; i< cadenas.length ; i++) {
Iñaki Martín

res = res + cadenas [i];

n
}

í
return res;

rt
}

a
y llamar así al método: String [] pruebas = {"Lunes","Miercoles","Viernes"};
String sol = concatenar(pruebas);

M
©

ik
๏ Pero desde Java SE 5.0 se permite el uso de varargs, argumentos variables, de este modo (con el mismo ejemplo anterior);
public String concatenar(String ... cadenas) {

a
Temario de curso JavaSE

String res = "";


for (int i=0; i< cadenas.length ; i++) {
res = res + cadenas [i];
}
return res;

©
}

๏ Parece que no simplifica mucho, pero sí se simplifica en la llamada al método, evitándonos crear arrays o colecciones;
String sol = concatenar("Lunes","Miercoles","Viernes");

๏ Se puede usar varargs junto con otros public String concatenarHasta(int cantidad, String ... cadenas) {
parámetros, aunque con ciertas limitaciones: String res = "";
for (int i=0; i< cantidad ; i++) {
- podemos declarar varios parámetros simples res = res + cadenas [i];
}
pero sólo podemos declarar un vararg (por return res;
}
método, claro) y, además,
- el vararg debe ser el último de los parámetros:
5.- Métodos Parámetros Variables (VarArgs) (II) 18

Temas avanzados Parámetros variables (var-args) (II)

๏ A la hora de usar parámetros variables, hemos de tener en cuenta que no se pueden realizar ciertas acciones
๏ Ya sabemos que no se puede sobrecargar métodos si tienen la misma firma, y en esto hay que tener cuidado con
parámetros variables. Esto NO compila, pues los dos métodos están esperando recibir lo mismo, una lista variable de Strings
Iñaki Martín

void concatenar(String... variosStrings) {

n
// lineas de código

í
}

rt
void concatenar(String [] variosStrings) {

a
// lineas de código
}

M
©

ik
๏ Esto es también erróneo, pues nuevamente los dos métodos están esperando recibir lo mismo, una lista variable de Strings
void concatenar(String... variosStrings) {

a
Temario de curso JavaSE

// lineas de código


}

void concatenar(String unstring, String... variosStrings) {


// lineas de código

©
}

๏ Constatar que se puede hacer un método que reciba un numero indeterminado… de arrays (u otra colección) :
void acumular(String [] ... grupos ) {
// lineas de código
}

๏ Eso si, dentro de una declaración SOLO puede haber un parámetro var-args… :
๏ Como curiosidad, con esta funcionalidad se puede cambiar la firma del famoso método main, pasando de
void main (String[] args)
a poder usarse sin el menor problema como
void main (String … args)

Вам также может понравиться