Autor Tema: no logro ejecutar programa con System.out.println y herencia java  (Leído 12035 veces)

xtc3

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 25
    • Ver Perfil
¿Alguien sabe por que no me acepta los métodos en el system.out.println?????

graciasssssssssssssssssss ;) ;) ;) ;) ;)


Código: [Seleccionar]

class vehiculo { //SUPERCLASE

/**
*VAMOS A VER EN ESTE EJERCICIO COMO FUNCIONA LA HERENCIA DE LAS CLASES
*UNA SUBCLASE VA A HEREDAR DE SU SUPERCLASE
*Y AÑADIRA UN METODO NUEVO Y VARIABLES NUEVAS
*/

public int velocidad;//ATRIBUTOS
public int ruedas;    //PUBLIC MUY IMPORTANTE SI NO NO PODRIA HEREDAR LA SIGUIENTE CLASE

//DEFINIMOS UN METODO

public void parar(){ //metodo VOID NO DEVUELVE RESULTADO LE PONEMOS PUBLIC TB

velocidad=0;

}

public void acelerar (int kms){

velocidad+=kms;  //a la variable velocidad se le suman los kilometros
}


//DEFINIMOS LA SUBCLASE

class coche extends vehiculo{ //EXTENDS LO PONEMOS PARA QUE HEREDE TODO DE VEHICULO

public int ruedas=4; // VARIABLE AÑADIDA, TIENE 4 RUEDAS
public int gasolina;

public void repostar(int ltrs){ //AÑADIMOS UN NUEVO METODO QUE ES REPOSTAR

gasolina+=ltrs; //SUMAMOS LA GASOLINA Y LOS LITROS

}


}

public static void main(String[] args){ //INICIO APLICACION
coche coche1=new coche();//CREAMOS UN OBJETO COCHE
coche1.acelerar(80); //LLAMAMOS AL METODO HEREDADO
coche1.repostar(12);
System.out.println(coche1.acelerar);*ME DA ERROR EN LOS DOS METODOS
System.out.println(coche1.repostar);ME DA ERROR EN LOS DOS METODOS

}

}

« Última modificación: 14 de Septiembre 2014, 21:37 por Alex Rodríguez »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1978
    • Ver Perfil
Re:por que me da este error???
« Respuesta #1 en: 08 de Abril 2014, 08:58 »
Hola, tienes dos cosas a corregir:

En el system.out.println escribes coche1.acelerar, y esto no es una invocación válida del método. El método solo puede ser invocado pasándole un parámetro que representa hasta qué velocidad se acelera (supongo que en kms/h). De modo que coche1.acelerar(10) sería válido porque estás acelerando 10 kms/h pero coche1.acelerar no es válido porque no estás diciendo cuánto se acelera.

Lo segundo es que dentro de un system.out.println sólo puedes incluir texto o algo que pueda ser transformado en texto. El método acelerar no devuelve texto ni nada que pueda ser transformado en texto, por tanto no puedes intentar invocarlo dentro de un System.out.println para mostrar algo por pantalla. Saludos.


xtc3

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 25
    • Ver Perfil
Re:por que me da este error???
« Respuesta #2 en: 08 de Abril 2014, 20:15 »
Hola Mario, ya he corregido el primer error
Código: [Seleccionar]
public static void main(String[] args){ //INICIO APLICACION
coche coche1=new coche();//CREAMOS UN OBJETO COCHE
coche1.acelerar(80); //LLAMAMOS AL METODO HEREDADO
coche1.repostar(12);
System.out.println(coche1.acelerar(80));
System.out.println(coche1.repostar(12));

el segundo problema dices que en el system.out.println solo puedo incluir texto pero en este caso solo quiero que me aparezca por ejemplo los kilometros que acelera el coche osea (80) entonces ahí ya no se como hacerlo. :(


Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:por que me da este error???
« Respuesta #3 en: 09 de Abril 2014, 08:56 »
Si lo que quieres es recuperar la información contenida en los atributos de la clase, por ejemplo qué velocidad tiene el coche o qué gasolina tiene el coche, necesitas acceder a ella.

Si los atributos están declarados como públicos (no recomendado) se puede acceder con la sintaxis nombreDelObjeto.atributo, pero en general se recomienda que los atributos se declaren como private y se acceda a ellos con métodos get como en el ejemplo de código que aparece aquí: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=426:ique-es-una-clase-java-concepto-atributos-propiedades-o-campos-constructor-y-metodos-cu00623b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188

Por otro lado, no está bien concebido tener todas las clases unificadas. Es más correcto definir tres clases:

Clase vehiculo:

Código: [Seleccionar]
class vehiculo { //SUPERCLASE

/**
*VAMOS A VER EN ESTE EJERCICIO COMO FUNCIONA LA HERENCIA DE LAS CLASES
*UNA SUBCLASE VA A HEREDAR DE SU SUPERCLASE
*Y AÑADIRA UN METODO NUEVO Y VARIABLES NUEVAS
*/

public int velocidad;//ATRIBUTOS
public int ruedas;    //PUBLIC MUY IMPORTANTE SI NO NO PODRIA HEREDAR LA SIGUIENTE CLASE

//DEFINIMOS UN METODO

public void parar(){ //metodo VOID NO DEVUELVE RESULTADO LE PONEMOS PUBLIC TB

velocidad=0;

}

public void acelerar (int kms){

velocidad+=kms;  //a la variable velocidad se le suman los kilometros
}

}

Clase coche:

Código: [Seleccionar]
//DEFINIMOS LA SUBCLASE
class coche extends vehiculo{ //EXTENDS LO PONEMOS PARA QUE HEREDE TODO DE VEHICULO

    public int ruedas=4; // VARIABLE AÑADIDA, TIENE 4 RUEDAS
    public int gasolina;

    public void repostar(int ltrs){ //AÑADIMOS UN NUEVO METODO QUE ES REPOSTAR
        gasolina+=ltrs; //SUMAMOS LA GASOLINA Y LOS LITROS
    }
}

Clase con el método main (es la que ejecutamos):

Código: [Seleccionar]
public class manejaCoche
{
    public static void main(String[] args){ //INICIO APLICACION
coche coche1=new coche();//CREAMOS UN OBJETO COCHE
coche1.acelerar(80); //LLAMAMOS AL METODO HEREDADO
coche1.repostar(12);
System.out.println("La velocidad actual es "+coche1.velocidad);
System.out.println("La gasolina actual es " + coche1.gasolina);
}
}


xtc3

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 25
    • Ver Perfil
Re:por que me da este error???
« Respuesta #4 en: 09 de Abril 2014, 17:30 »
Le he cambiado la ultima parte del codigo que me has enviado y dice que elimine static del metodo main, lo elimino y me sigue dando error, por otra parte lo que yo pretendia era simplemente llamar a los métodos desde el system.out pero no puedo, si les quito void tampoco me deja aunque les quite void y les ponga return.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:por que me da este error???
« Respuesta #5 en: 09 de Abril 2014, 17:59 »
Tienes que crear tres clases diferentes, no una sola clase.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".