Blog
En Java estas funciones deben ser definidas dentro de las clases. Este es un pequeño ejemplo:
public class Main { public static void foo() { // Función de nuestro código } }
Expliquemos paso a paso todas las secciones de este código.
- foo: es un método definido en la clase principal (Main).
- static: Tal como explicamos previamente, un método estático es aquel que pertenece a la clase principal, pero no es una instancia específica. Esto nos permite llamar al método desde una clase distinta sin problemas.
- void: Esto nos quiere decir que el método no devuelve valor alguno.
Argumentos o Parámetros
Los argumentos o parámetros sirven para intercambiar información con el método deseado.
Un ejemplo de un argumento puede ser:
public void bar(int numero1, int numero2) { ... }
Además de esto, nuestro código debe tener una parte donde haremos un llamado a la función bar.
int a = 3; int b = 5; bar(a, b);
Al tu correr una aplicación con este código primero se ejecuta el siguiente código:
bar(a, b);
Y luego es que se ejecutará la parte restante que le da un valor a los enteros.
int num1 = a; int num2 = b;
Lo que esto quiere decir es que el valor de a es copiado a num1 e igualmente sucede lo mismo con el valor de b y num2.
Si en algún momento llegas a cambiar los valores de num1 y num2 esto no afectará de ninguna forma los valores de a y b.
En dicho caso de que los argumentos o parámetros sean objetos, las reglas de sintaxis siguen siendo las mimas, pero no se comportan completamente igual.
public void bar2(Student s1, Student s2) { ... }
Y se usa de la siguiente forma:
Estudiante juan = new Estudiante(juan); Estudiante pedro = new Estudiante(pedro); bar2(juan, pedro);
Y sucede exactamente igual que con el ejemplo anterior.
Estudiante s1 = juan; Estudiante s2 = pedro;
La diferencia radica en que al tratarse de objetos la ejecución de métodos cambia al objeto. Esto es posible arreglarlo cambiando el valor de referencia.
s1.setName(Otro); // El nombre de juan cambia a Otro. s1 = new Estudiante(Nombre); // s1 es un nuevo estudiante completamente diferente a juan que se llama Nombre. // Actualmente el valor de s1 no es igual a juan.
Métodos no estáticos
Este tipo de métodos suelen ser usados más frecuentemente que los métodos estáticos.
La diferencia radica en que estos métodos solo son corridos en un objeto y no en toda la clase como pasaba anteriormente.
public class Estudiante { private String nombre; public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } }
Y además al llamar métodos necesitarás un objeto.
Estudiante s = new Estudiante(); s.setNombre("Daniel"); String nombre = s.getNombre(); Estudiante.setNombre("Bob"); // No funcionará Estudiante.getNombre(); // No funcionará
Ejercicio
Usando el código proporcionado genera el método printFullName para que genere el nombre completo de uno de los estudiantes.
class Student { private String firstName; private String lastName; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } // Tu código va aquí } public class Main { public static void main(String[] args) { Student[] students = new Student[] { new Student("Morgan", "Freeman"), new Student("Brad", "Pitt"), new Student("Kevin", "Spacey"), }; for (Student s : students) { s.printFullName(); } } }
Si has llegado hasta aquí, enhorabuena, pasa a la siguiente lección:
[…] vez completado tu ejercicio y asimilada la lección es hora de pasar a la siguiente parte de este curso donde hablaremos de las […]
[…] Funciones en Java […]