public class Main {
public static void main(String[] args) {
Centralita callcenter = new Centralita();
LlamadaProvincial p1 = new LlamadaProvincial ("8299333777", "8095551111", 43, 1);
Centralita.registrarLlamada(p1);
}
}
Si quieres registrar llamadas dentro de la centralita callcenter, entonces deberás poner:
callcenter.registrarLlamada(p1);Bien, eso no te funcionará, porque registrarLlamada es
static. Tendrías que quitarle el static. Probablemente, no quieras ningún static en esa clase ("llamadas" tampoco debería ser static)
Un miembro static "pertenece a la clase, no al objeto".
Por ejemplo:
public class Clase {
public static int numStatic;
public int num;
}
Puedes hacer:
Clase objeto = new Clase();
objeto.num = 5;
// O
Clase.numStatic = 10;
NO puedes hacer:
Clase objeto = new Clase();
objeto.numStatic = 5;
// NI
Clase.num = 10;
¿Razón?
objeto.numStatic: Como dijimos, un miembro static pertenece a la clase en sí. Por tanto, no al objeto.
Clase.num: Por otra parte, un miembro no-static existe en cada objeto, pero no existe en la clase.
Clase objeto1 = new Clase();
Clase objeto2 = new Clase();
objeto1.num = 5;
objeto2.num = 7;
Clase.numStatic = 10;
Ahí habrá 3 valores diferentes:
objeto1.num == 5
objeto2.num == 7
Clase.numStatic == 10
Las funciones son más de lo mismo.
Un método static se invoca con "Clase.metodo()". Dentro de la función static, tendrás acceso a los miembros static (numStatic, por ejemplo).
Un método no-static se invoca con "objeto.metodo()". Dentro de la función no-static, tendrás acceso a los miembros no-static (los del objeto). Además, puedes acceder a los miembros static como lo harías normalmente ("Clase.miembro").
Si algo no te quedó claro, pregúnta de nuevo, especificando el qué.
Haciendo esos cambios, debería funcionarte correctamente. Si no lo hace, coloca aquí el código, el error y la línea del error.
4. El uso de public y static es obligatorio para que el metodo y el arreglo sean visibles en el main?.
Si es public, podrás llamar o utilizar objetos desde fuera de la clase. Si es private, solo desde dentro. Si es protected, desde dentro y desde las clases que hereden de ella.