ayuda Java

Cyph3r

Hola . He empezado hace nada con java en practicas y bueno no me aclaro mucho me han mandado 3 ejercicios y bueno los 2 primeros bien y el ultimo es esto:

public class DutyGreeter implements Greeter {
/**

  • @param args
    */
    public static void main(String[] args) {
    Greeter duty = new DutyGreeter();
    duty.Greet();
    }
    // TODO
    }

Con esto tengo que hacer que aparezca

public static void main(String[] args) {
// TODO Auto-generated method stub
String msg = "Hello, World!";
System.out.println(msg);
}

Sin modificar el codigo es decir kiero que aparezca el hello world por pantalla.

Primer problema eso de implement Greeter que es ? :S Creo que es una interface pero no estoy seguro si me podeis explicar un poco lo agradeceria mucho.

Greeter duty crea un objeto llamado duty del tipo Greeter no?

r2d2rigo

Veamos, creo que ahi te falta algo de codigo. DutyGreeter es una clase implementada a partir de Greeter, por lo que hereda sus funciones y variables. Y en el main de DutyGreeter, creas un Greeter y a continuacion llamas a su funcion Greet(); si quieres mostrar el "Hello world!", deberias meterlo dentro de la funcion Greet() del Greeter, ya que si contruyes un DutyGreeter seguiria este ciclo -> DutyGreeter.main()->crear Greeter->Greeter.Greet()->imprime "Hello world!".

Cyph3r

Si falta codigo en la parte de arriba lo que pasa es que no se que debo añadir xD

Entiendo lo que dices y es lo que pensaba hacer mi problema esta en crear el greeter.

Tig

No entiendo, estas llamando a un método propio, igual lo que te pide es que hagas un interface con el método Greet (por cierto, por convención los métodos y variables se escriben con minúsculas y las clases con mayísculas) y luego lo "overridees" o como se diga en español?

Aparentemente te bastaría con crear un método greet

private void greet(){

System.out.println("Hello world");
}

pero si tienes que usar lo de abajo, tendrás que llamar al constructor de la clase a la que pertenezca ese main, es decir:

private void greet(){

new ClaseConElMain();
}

IS4kO

Te falta el metodo Greet(). como creo que decia por arriba

Cyph3r

Gracias por la ayuda :P , bueno en teoria tengo que crear un interface llamada Greeter y dentro tendre que poner

private void greet(){

System.out.println("Hello world");
}

El problema esta en que cuando creo la interface me sale como un error :S

Tig

Cypher, si no recuerdo mal un interface tiene que declarar métodos abstractos, es decir, tendrás que poner dentro del interface

public interface Greet{

public abstract void greet();

}

Luego, cualquier clase que implementes te obligara a usar los métodos que tenga el interface. Es una manera de poder usar herencia pero sin meterse en los problemas que a veces esto conlleva. Incluso puedes ahorrarte el poner "abstract"; se da por supuesto que todos los métodos de un interface son abstractos.

Luego ya en tu clase DutyGreeter simplemente haces lo que te he dicho

private void greet(){
System.out.println("Hello world");
}

Si vas a tenr que programar en java, yo tengo un libro que me sirvió bastante para empezar, la verdad

Head first to Java, editorial: Oreilly.

Está en ingles.

PD: Por cierto, que aqui semos todos viejos de mv xD. Me he fijado y sólo 1 no se registro casi al principio de mv.

Cyph3r

Bueno el programa me sale error

Esto esta en una clase llamada DutyGreeter:

public class DutyGreeter implements Greeter {

public static void main(String[] args) {

Greeter duty = new DutyGreeter();
duty.Greet();
			
	}

private void Greet()  {
System.out.println("Hello world");
}

}

Y ahora la interface:

public interface Greeter{

public abstract void Greet();

}

Pero me sale error en la linea

private void Greet() { en el Greet :S

Ok ya nada ya me salio poniendo public void Greet ya funciona aunque no entiendo muy bien la diferencia entre poner public o private :S

Igualmente muchas gracias a todos sobretodo a ti Tig :P , es que yo C se bastante pero claro hace 2 dias empeze con java y bueno es bastante diferente esto de las clases y objetos nose estoy muy verde , tengo el libro Aprenda Java como si estubiera en primero.

Tig

private son métodos o variables que sólo se podrán ver desde la misma clase, mientras que public son cosas accesibles desde cualquier clase.

Por ejemplo, aunque supongo que todavía no sabrás de que te hablo, la encapsulacion consiste en poner todas las variables de un objeto en modo private, para que nadie desde el exterior pueda modificarlas directamente. Entonces es cuando se usan los llamados getters y setters.

Un ejemplo sencillote:

public class Camion{

private int matricula;

public void setMatricula(int m){
this.matricula= m;
}

public int getMatricula(){
return matricula;
}
}

----Si yo, desde otra clase, instanciara un camion

Camion cam = new Camion;

---no podrías hacer

cam.matricula = 123;

----sino que deberías hacer

cam.setMatricula(123);

----y para obtener la matrícula

int mat = cam.getMatricula();

---en cambio, si la matricula de camion fuera public, podrías hacer directamente

cam.matricula = 123;

Espero haberte aclarado algo y no haberte liado la cabeza xDD

P.D: Si sabes C supongo que todo esto ya lo sabrías, aunque yo de C no tengo ni idea osea q no se que politicas de seguridad de usan.

Usuarios habituales

  • Tig
  • Cyph3r
  • IS4kO
  • r2d2rigo