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 […]