2010-09-11 16 views
5

Ok, estoy trabajando en una tarea para la escuela, y configuré mi clase principal y también otra clase llamada Transacción. En mi clase principal tengo:Java Constructor undefined?

Transaction t = new Transaction(); 

Y la transacción está subrayada: dice que el constructor no está definido. ¡¿POR QUÉ?!

clase La transacción se ve así:

public class Transaction { 

private String customerNumber, fName, lName, custAddress, custCity; 
private int custZip, custPhone; 

/** Constructor*/ 
public Transaction(String a, String b, String c, String d, String e, int f, int g){ 
    this.customerNumber = a; 
this.fName = b; 
this.lName =c; 
this.custAddress = d; 
this.custCity = e; 

} 

Parece que sólo debería funcionar, pero no es justo. Incluso cuando conecto un conjunto de variables en donde hago el nuevo objeto Transaction en main, todavía dice undefined. Alguien por favor ayuda!

+1

Parece que necesita leer al menos algunos Java 101 para comenzar. –

+0

Sugiero que también verifique sus nombres de variables. Además, si no los está usando todos, ¿por qué parametrizar 'f' y' g' en el constructor? –

Respuesta

8

No hay una definición de constructor predeterminada en su clase.

Cuando proporciona la definición de al menos un constructor con parámetros, el compilador ya no le proporciona el constructor predeterminado.

5

Esto se debe a que no ha declarado un constructor sin argumentos.

Cuando no tiene ningún constructor definido, hay un constructor predeterminado sin argumentos definidos automáticamente para usted.

Pero ahora que ha declarado un constructor con argumentos, ahora necesita pasarlos o declarar otro constructor sin argumentos.

+0

Constrictor ... ¿fuga subconciente? :) –

+0

Bloody iPad Spellcheck – Tom

4

Necesita crear un constructor predeterminado (uno que no tome argumentos).

-5

Los tipos que dijeron que no hay un constructor predeterminado porque codificaron un constructor con argumentos piensan en C++. Eso es cierto para C++ pero no para Java. No existe tal cosa como un constructor predeterminado. Tienes que codificar cualquier constructor para tu clase. No necesita tener un constructor si no va a construir ningún objeto.

+1

En Java se obtiene un constructor predeterminado sin argumentos si no se especifican constructores. –

+0

Experimenté. ¿Estás diciendo que myClass mc = new myClass(); puede usarse si no ha codificado el constructor sin argumentos? Eso no funcionó cuando lo probé. –

+1

@JD Williams: el constructor predeterminado solo existe si no especifica ningún otro constructor, no solo no hay constructores sin argumentos. Consulte http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.8.9, que define el constructor predeterminado. –