| |||
Respuesta: Duda POO tengo otra duda: esto en main: Velero oVelero=new Velero(); BarcoMotor oBarcoMotor=new BarcoMotor(); Yate oYate=new Yate(); AlquilerAmarre oAlquiler=new AlquilerAmarre(); System.out.print(oYate.eslora()); } ----------------------------------------- En otra clase: AlqulerAmarre Barco oBarco=new Barco(); double u=oBarco.eslora(20.0); ----------------------------------- otra clase: Barco double eslora; String matricula; int añoFabricacion; public double eslora(double a){ eslora=a; return eslora; }} --------------------------------- clase yate: public class Yate extends Barco { int CV; int camarotes; public double eslora(){ return eslora; } Y en main, no me imprime los 20.0 metros que deberia salir y me da error por que!?!? muchas gracias de todos formas! |
| |||
Respuesta: Duda POO copio el codigo exactamente: package Alquiler; import java.util.Scanner; public class AlquilerAmarre { public static void main(String[] args){ int d; int m; int a; int df; int mf; int af; String nombre; Long DNI; String posicion; Barco oBarco=new Barco(); BarcoMotor oBarcoMotor=new BarcoMotor(); Velero oVelero=new Velero(); Yate oYate=new Yate(); oBarco.eslora(20.0); System.out.println("Día de empieze"); d=(int)LeerNum(); System.out.println("Mes de empieze"); m=(int)LeerNum(); System.out.println( "Año de empieze"); a=(int)LeerNum(); System.out.println("Día de fin"); df=(int)LeerNum(); System.out.println("Mes de fin"); mf=(int)LeerNum(); System.out.println("Año de fin"); af=(int)LeerNum(); if(d<=dias(m,a)&& m>0 ){ System.out.println("Fecha bien"); } if(df<=dias(mf,af)&& mf>0 ){ System.out.println("Fecha bien"); } System.out.print(avanzar(d,df,m,mf,a,af)); System.out.print("yate"+oYate.esloraYate()); } public static int avanzar(int d, int df,int m, int mf,int a, int af){ int dT=0; for(int i=0;i<200;i++){ if (d==df && m==mf && a==af){ break; } d = d + 1; if (d > dias(m,a)) { d = 1; m = m + 1;} if (m>12) { m=1; a=a+1;} dT=dT+1; }return dT;} public static int mes(int m){ if(m>12 ||m<=0){ System.out.println("Mes erroneo"); } int []diames={0,31,28,31,30,31,30,31,31,30,31,30,31}; return diames[m]; } public static int dias(int m,int a) { int result = mes(m); if (m==2 && esBisiesto(a)) { result = result+1; } return result; } public static boolean esBisiesto(int a) { return ((a % 4 == 0) && (a % 100 !=0) || (a % 400 == 0)); } public static double LeerNum(){ Scanner leer = new Scanner(System.in); Double a=leer.nextDouble(); return a; } } ----------------------------------------------------------------------------------- package Alquiler; public class Barco { double eslora; String matricula; int añoFabricacion; public void eslora(double a){ eslora=a; } public double devolverEslora(){ return eslora; } } ---------------------------------------- package Alquiler; public class Yate extends Barco { int CV; int camarotes; public double esloraYate(){ double a=devolverEslora(); return a; } } --------------------------------- se supone que al principi a oBarco le doy de eslora 20.0, entonces se debería de quedar a 20.0 y yate entonces debnería de cogerlo no??? porque al imprimir en alquiler no da los 20.0 ;S;S |
| |||
Respuesta: Duda POO Creo que te confundes, que la clase Yate herede de la clase Barco no quiere decir que todos los objetos compartan los datos. Tu estás creando un objeto de la clase Barco y le estás pasando el valor de eslora de 20 y luego creas otro objeto distinto de la clase Yate. Ese objeto no va a tener el valor 20 de eslora porque no se lo has dado. Tendrás que usar el método eslora para asignarle el valor.
Código Java:
Ver original |
| ||||
Respuesta: Duda POO Te vuelvo a dejar mi respuesta por si se te paso leerla... ...tu pusiste que la eslora de oBarco es de 20, meintras que la eslora de oYate nunca la pusiste.... Ese es el core, la variable eslora si es heredada pero no con el valor por que el valor de 20 lo tiene un objeto y el valor es diferente para otro objeto... Con el yate puedes usar la eslora pero no valdra 20 por que los 20 son de otro objeto, si quieres que todos los barcos y los yates tengan la misma eslora deberas hacer la eslora estatica, y asi en teoria te daria lo que tu quieres... algo así en la clase barco Código PHP: |
Etiquetas: |