Foro de elhacker.net

Programación => Java => Mensaje iniciado por: m@o_614 en 27 Mayo 2012, 18:25 pm



Título: clase abstracta y herencia
Publicado por: m@o_614 en 27 Mayo 2012, 18:25 pm
Saludos estoy haciendo este programa para aprender de clases abstractas,herencia y polimorfismo

Código
  1. abstract class Persona{
  2. private String nombre;
  3. private String direccion;
  4. private String telefono;
  5. private String rfc;
  6.  
  7. public Persona(String nombrex,String direccionx,String telefonox,
  8. String rfcx){
  9. fijaNombre(nombrex);
  10. fijaDireccion(direccionx);
  11. fijaTelefono(telefonox);
  12. fijaRFC(rfcx);
  13. }
  14.  
  15. public void fijaNombre(String nombrex){
  16. nombre=nombrex;
  17. }
  18.  
  19. public void fijaDireccion(String direccionx){
  20. direccion=direccionx;
  21. }
  22.  
  23. public void fijaTelefono(String telefonox){
  24. telefono=telefonox;
  25. }
  26.  
  27. public void fijaRFC(String rfcx){
  28. rfc=rfcx;
  29. }
  30.  
  31. public String dameNombre(){
  32. return nombre;
  33. }
  34.  
  35. public String dameDireccion(){
  36. return direccion;
  37. }
  38.  
  39. public String dameTelefono(){
  40. return telefono;
  41. }
  42.  
  43. public String dameRFC(){
  44. return rfc;
  45. }
  46.  
  47. public String concatenaInfo(){
  48. return dameNombre()+" "+dameDireccion()+" "+dameTelefono()+" "+dameRFC();
  49. }
  50. }
  51.  
  52. class PersonaFisica extends Persona{
  53. private String claveIFE;
  54.  
  55. public PersonaFisica(String nombrex,String direccionx,String telefonox,
  56. String rfcx,String claveIFEx){
  57. super(nombrex,direccionx,telefonox,rfcx);
  58. fijaClaveIFE(claveIFEx);
  59. }
  60.  
  61. public void fijaClaveIFE(String claveIFEx){
  62. claveIFE=claveIFEx;
  63. }
  64.  
  65. public String dameClaveIFE(){
  66. return claveIFE;
  67. }
  68.  
  69. public String concatenaInfo(){
  70. return super.concatenaInfo()+" "+dameClaveIFE();
  71. }
  72. }
  73.  
  74. class PersonaMoral extends Persona{
  75. private PersonaFisica representante;
  76.  
  77. public PersonaMoral(String nombrex,String direccionx,String telefonox,
  78. String rfcx,PersonaFisica representantex){
  79. super(nombrex,direccionx,telefonox,rfcx);
  80. fijaRepresentante(representantex);
  81. }
  82.  
  83. public void fijaRepresentante(PersonaFisica representantex){
  84. representante=representantex;
  85. }
  86.  
  87. public PersonaFisica dameRepresentante(){
  88. return representante;
  89. }
  90.  
  91. public String concatenaInfo(){
  92. return super.concatenaInfo()+" "+dameRepresentante();
  93. }
  94. }
  95.  
  96. public class PolimorfismoRelaciones {
  97.  
  98. public static void main(String[] args) {
  99. PersonaFisica pf=new PersonaFisica("Juan","Huanatos #2502","36789765","AMA36","457AB");
  100. PersonaMoral pm=new PersonaMoral("Ana","Rio Altar #4562","36895764",
  101. "SA2347",new PersonaFisica("Juan","Huanatos #2502","36356736","XH89NT","489H"));
  102. System.out.println(pf);
  103. System.out.println(pm);
  104. }
  105.  
  106. }
  107.  

Lo tuve que hacer siguiendo unos requerimientos obligatorios que me puso mi profesor que son los siguientes:

Entregar un archivo fuente PolimorfirmoRelaciones.java para aplicación de consola
que cumpla con los siguientes requerimientos
2. Codificación de la clase PolimorfirmoRelaciones conteniendo al método main
3. Codificación de la clases Persona, PersonaFisica y PersonaMoral en el mismo
archivo
4. Solo declarar los atributos de cada clase (no definirlos en la misma línea que sean
declarados)
5. Inicializar todos los atributos de las clases por medio de un constructor con
parámetros
6. Declarar y definir los métodos dame() para las clases
7. Declarar y definir los métodos fija() para las clases
8. La inicialización de los atributos haga uso de los métodos fija()
9. La clase Persona no sea instanciable
10. Codificar en el ámbito del método main lo siguiente:
a) Declarar y definir una variable de instancia del tipo PersonaFisica
b) Declarar y definir una variable de instancia del tipo PersonaMoral
c) Mediante un sólo método del objeto de tipo PersonaFisica que devuelva un
String, imprimir en la consola toda su información
d) Mediante un sólo método del objeto de tipo PersonaMoral que devuelva un
String, imprimir en la consola toda su información.

No me marca errores pero a la hora de compilarlo solo me imprime esto
y no se por qué, debería imprimirme toda la información concatenada


PersonaFisica@12dacd1
PersonaMoral@1ad086a

de antemano gracias


Título: Re: clase abstracta y herencia
Publicado por: adastra en 27 Mayo 2012, 18:43 pm
Te imprime las direcciones de memoria del objeto, es normal, ya que en las lineas
Código:
		System.out.println(pf);
System.out.println(pm);

Tienes estas enviando los objetos. Para la clase PersonaFisica y PersonaMoral debes sobreescribir el método toString()