3

Ok, I am working on an assignment for school, and I set up my main class and also another class called Transaction. In my main class I have:

Transaction t = new Transaction();

And Transaction is underlined: it says that the constructor undefined. WHY?!

The Transaction class looks like this:

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;

}

It looks like it should just work, but it's just not. Even when I plug in a bunch of variables into where I make the new Transaction object in main, it still says undefined. Somebody please help!

2
  • 1
    It seems like you need to read at least some Java 101 to get started. Commented Sep 11, 2010 at 5:30
  • I would suggest you to check you variable names too. Plus, if you're not using all of them, why parametrize f and g in the constructor? Commented Jan 30, 2014 at 22:19

4 Answers 4

9

There is no default constructor definition in your class.

When you provide the definition of at least one parameterized constructor the compiler no longer provides you the default constructor.

Sign up to request clarification or add additional context in comments.

Comments

2

This is because you haven't declared a constructor with no arguments.

When you have no constructor defined at all, there is a default constructor with no arguments defined automatically for you.

But now that you've declared a constructor with arguments, you now need to pass them or declare another constructor with no arguments.

1 Comment

Constrictor... subconcious leak? :)
2

You need to make a default constructor (one that takes no arguments).

Comments

-5

Those guys that said that you that there is no default constructor because you coded a constructor with arguments are thinking C++. That's true for C++ but not for Java. There is no such thing as a default constructor. You have to code any constructor for your class. You don't have to have a constructor if you're not going to construct any objects.

4 Comments

In Java you do get a default constructor with no arguments if you specify no constructors.
I experimented. Are you saying that myClass mc = new myClass(); can be used if you haven't coded the no argument constructor? That didn't work when I tried it.
@JD Williams: The default constructor only exists if you specify no other constructors at all, not just no constructors with no arguments. See java.sun.com/docs/books/jls/third_edition/html/… , which defines the default constructor.
Thanks for the link, Matthew. I went back to see what I had done wrong with my experiment. I do see now that it's only if no constructors are defined that a default is provided. My mistake was in sloppy reading of the problem...since he had a constructor with arguments then he needed to provide a default. If he had not coded any constructors then the compiler would provide one. Btw, I registered on the site minutes before making that first comment. Not a very good start but I do appreciate getting me understanding improved.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.