¿Por qué no imprime nada?

carlosrj
29 de Diciembre del 2004
Alguien podria explicarme por que el siguiente programa no imprime nada, ni siquiera la palabra "Contrato:"

Saludos, Carlos.
package Practica2;
import java.util.Calendar;



//Creamos la clase Cliente

class Cliente {
private String dni;
private String nombre;
private String apellido;
private String direccion;
private int telefono;

//Ahora Creamos el constructor del Cliente

Cliente(String dni, String nombre, String apellido, String direccion, int telefono) {
this.dni = dni;
this.nombre = nombre;
this.apellido = apellido;
this.direccion = direccion;
this.telefono = telefono;

} //Fin del constructor Cliente
} // Fin de la clase Cliente

// Creamos la Clase generica Vehiculo

class Vehiculo {
protected String matricula; String modelo; int año; int kilometraje; double costeDia;

//Constructor del vehiculo:

Vehiculo(String matricula, String modelo, int año, int kilometraje, double costeDia)
{
this.matricula = matricula;
this.modelo = modelo;
this.año = año;
this.kilometraje = kilometraje;
this.costeDia = costeDia;
}
}

//Creamos la clase coche

class Coche extends Vehiculo {

protected int puertas;
protected boolean aireAcondicionado;


//Creamos el constructor de Coche

Coche(String matricula, String modelo, int año, int kilometraje,
double costeDia, int puertas,
boolean aireAcondicionado) {
super(matricula, modelo, año, kilometraje, costeDia);
this.puertas = puertas;
this.aireAcondicionado = aireAcondicionado;

} //Fin constructor coche

} // Fin de la clase Coche

//Creamos la clase Moto

class Moto extends Vehiculo {
protected int cilindrada;
protected boolean sidecar;

//Ahora creamos el constructor de moto

Moto(String matricula, String modelo, int año, int kilometraje, double costeDia,
int cilindrada, boolean sidecar){
super(matricula, modelo, año, kilometraje, costeDia);
this.cilindrada = cilindrada;
this.sidecar = sidecar;

}//Fin constructor Moto

}//Fin clase Moto


//Ahora creamos la clase camion

class Camion extends Vehiculo {
protected int puertas;
protected int nEjes;
protected double carga;
protected boolean aireAcondicionado;

Camion(String matricula, String modelo, int año, int kilometraje,
double costeDia, int puertas, int nEjes,double carga,
boolean aireAcondicionado){
super(matricula, modelo, año, kilometraje, costeDia);
this.puertas=puertas;
this.nEjes=nEjes;
this.carga=carga;

}
}

//Creamos la clase Contrato

class Contrato {
protected Cliente datosCliente; //Incluye cliente
protected Vehiculo datosVehiculo; // Incluye vehiculo
protected String fechaAlta;
protected String fechaBaja;
protected int diasAlquiler;
protected double costeTotal;


//Creamos el contructor del contrato

Contrato(Cliente datosCliente,Vehiculo datosVehiculo, String fechaAlta,
String fechaBaja, int diasAlquiler, double costeTotal) {
this.fechaAlta = fechaAlta;
this.fechaBaja = fechaBaja;
this.diasAlquiler = diasAlquiler;
this.costeTotal = costeTotal;
this.datosCliente = datosCliente ; //Nuevo objeto
this.datosVehiculo = datosVehiculo; // Nuevo objeto
}// Fin constructor contrato

}
//Fin clase contrato

//Creamos la clase principal


class ClasePrincipal {

public static void main(String[] args) {

Cliente cliente1 = new Cliente("9876543", "Alfonso", "Nieto", "Los Laureles, 10", 222222222);
//Creado cliente1

Moto moto1 = new Moto("1543NUF", "Honda CBR", 2003, 14500, 40, 600,false);


Contrato contrato1 = new Contrato( cliente1, moto1, "15/12/2004","29/11/2004", 10,180);

// Ahora sacamos por pantalla el contrato

System.out.println("Contrato: "+ contrato1);

} // Fin main()
} // Fin ClasePrincipal







Miguel
29 de Diciembre del 2004
La razón es sencilla. Las variables de instancia son privadas en cada clase. eso implica que solamente son visibles en esa misma clase y no en el resto de clases. lo que intentas imprimir es la referencia a ese objeto y no a sus variables. ¿Que es lo que quieres imprimir exactamente?

carlosrj
29 de Diciembre del 2004
Quiero imprimir el contrato, que incluye al cliente1 y al vehiculo1.

Gracias de antemano Miguel.

Miguel
29 de Diciembre del 2004
puedes crear un método toString. por ejemplo si tengo una clase Triangulo cuyas variables de instancia son:

public class Trinangulo{

Miguel
29 de Diciembre del 2004
public class Triangulo{
private float base;
private float altura;

// constructor

public String toString(){
return new String(base + "," + altura);
}

public class Prueba{
public static void main(String args[]){
Triangulo t = new Triangulo(10, 10);
System.out.println(t.toString());
}
}

Espero que te sea de ayuda. si tienes alguna problema aqui estoy

carlosrj
29 de Diciembre del 2004
Gracias, voy a intentarlo.

Ya te comentare como he quedado cuando lo tenga hecho.