llamar a un metodo que esta en una clase hacia otra clase
estoy trabajando en net beans 6.9.1, con el libro COMO PROGRAMAR EN JAVA 7 DE deitel &deitel: y estoy teniendo problemas con lo siguiente:
tengo dos proyectos por separado
1-el primero crea el siguiente metodo:
public class Libro
{
public void mostrarMensaje()
{
System.out.println("Bienvenido al Libro de Calificaciones !");
}
}
2- el segundo quiere llamar al metodo de la parte de arriba haciendo lo siguiente:
public class Main {
public class pruebalibro
{
public static void main(String[] args) {
Libro miLibro = new Libro(); ----------------- crea una instancia del objeto
Libro.mostrarMensaje(); aqui quiero llamar al metodo
QUE DEBO HACER PARA SOLUCIONARLO?
EL CODIGO DEL "LIBRO" ESTA MAL?
ESPERO ME PUEDAN AYUDAR con este problema
GRACIAS DE ANTEMANO.
Prueba llamando al metodo de
Prueba llamando al metodo de esta manera: miLibro.mostrarMensaje();
como lo dice javadicto} el
como lo dice javadicto
el código correcto seria
public class Main {
public class pruebalibro
{
public static void main(String[] args) {
Libro miLibro = new Libro(); ----------------- crea una instancia del objeto
miLibro.mostrarMensaje();
}
}
RTFS
Te dejo un post muy constructivo de aqui mismo link
no puedo usar el metodo
public static void main(String[] args) -------------inner classes cannot have static declarations
{
Libro Libro1 = new Libro(); -------------------- LA PALABRA Libro SIGUE SALIENDO SUBRAYADO EN ROJO
Libro1.mostrarMensaje(); ------------- AQUI EL METODO MOSTRAR MENSAJE SIGUE SALIENDO SUBRAYADO EN ROJO
CREATE class "libro" en package pruebalibro
CREATE class "libro" en pruebalibro.Main
La clase main
Hola @junior0941, tu clase Main debe estar de esta forma para que pueda llamar al método de otra clase.
public class Main {
public static void main(String[] args){
Libro libro = new Libro();
libro.mostrarMensaje();
}
}
recuerda que deben de estar en el mismo paquete
La clase Libro:
public class Libro {
public void mostrarMensaje() {
System.out.println("Bienvenido al libro de calificaciones");
}
}
llamando al metodo mostrar mensaje
MUCHAS GRACIAS POR TU RESPUESTA, ESPERO K PUEDAS RESPONDER A ESTAS PREGUNTAS
¿PORQUE LAS 2 CLASES DEBEN ESTAR EN EL MISMO PAQUETE?
¿A QUE SE LLAMA VARIABLE DE INSTANCIA Y VARIABLE DE CLASE?
¿PORQUE SALIA ERROR EN EL CODIGO ANTERIOR? ¿CUAL ERA LA CAUSA DEL PROBLEMA?
ESPERO QUE ME PUEDAS AYUDAR.
SALUDOS DESDE PERU.
Esto me huele a tarea, pero...
... Siempre hay que otorgar el beneficio de la duda. Aunque déjame decirte que no puedo evitar pensar mal ahora que son épocas de exámenes finales en muchos lugares, ojalá no traiciones nuestra confianza...
Pasando así a tus preguntas:
No es requisito, aunque para tus ejemplos prácticos ponlos en el mismo, si no lo estuvieran tendrías que hacer un import a las clases que vayas a usar (con todo y el paquete definido). Como seguramente te confundirás ahora con paquetes, sólo mételo todo en el mismo.
La variable de instancia, si programaste alguna vez en C, es el equivalente a una variable global. La variable de instancia define todos los atributos de un objeto (instancia) y generalmente se declaran fuera de cualquier método, dentro de la declaración de clase y, por cuestiones de seguridad, es recomendable declararlas como private delegando su manejo exclusivamente a los métodos get y set que para este fin se declaren.
Entramos con otro concepto, el de un elemento static. Básicamente puedes tener elementos propios a cada uno de los objetos que instancies, pero también puedes tener atributos o métodos que sean comunes a todas las instancias de esa clase.
Ahora bien, de la forma que lo mandabas llamar era Clase.metodo() cosa que sólo hubiera funcionado si hubieras declarado tu método mostrarMensaje() como static, de manera que, como es común a todos los objetos de esa clase, no es, por definición, necesario crear un objeto para accesar a ese método.
Si no te me has perdido hasta aquí, vamos bien. Te comentaban que crearas un objeto de la clase Libro() porque tu método mostrarMensaje() no es estático, es decir, es independiente para cada una de las instancias que de esa clase se creen. De modo que su llamaba sólo será exitosa si y sólo si creas una instancia y luego mandas llamar el método mostrarMensaje() de la misma. Objeto.metodo().
Revisa que hayas copiado correctamente el código del libro. Estoy casi seguro que por ahí te equivocaste en algo, sino, proporcioname la página y lo reviso en el mío para una ayuda más certera.
Espero haberme explicado bien, traté de digerirlo lo más posible para explicártelo lo más sencillo posible, si no, cualquier duda, háznosla saber.
el error era por que tus
el error era por que tus clases estaban en diferentes paquetes . y la solucion a eso era hacer un import .
en la clase main donbe llamas al metodo mostrar mensaje hacer esto
import nombredelpaquetequecontieneelmetodomostrarmensaje .*; nada mas eso es todo y listo.
No
@freddyrrc, después de DOS años de publicado el post, sigue estando correcta la respuesta de @javadicto.