Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is constructor overloading in Java?
Constructor overloading means having multiple constructors in a class with the same name but different parameters. It allows creating objects in different ways.
Click to reveal answer
beginner
Why do we use constructor overloading?
We use constructor overloading to create objects with different initial values or setups easily, without writing multiple classes.
Click to reveal answer
intermediate
How does Java decide which constructor to call when overloading is used?
Java looks at the number and types of arguments passed when creating an object and matches them to the constructor with the corresponding parameter list.
Click to reveal answer
intermediate
Can constructors have the same number of parameters but different types in overloading?
Yes, constructors can have the same number of parameters but different types, and Java will choose the correct one based on argument types.
Click to reveal answer
beginner
Show a simple example of constructor overloading in Java.
class Box {
int width, height;
Box() { width = 0; height = 0; }
Box(int w, int h) { width = w; height = h; }
}
Here, Box has two constructors: one with no parameters and one with two parameters.
Click to reveal answer
What does constructor overloading allow you to do?
ACreate multiple classes with the same name
BCreate multiple constructors with different parameters
COverride methods in a subclass
DChange the return type of constructors
✗ Incorrect
Constructor overloading means having multiple constructors with different parameter lists in the same class.
Which of these is a valid constructor overloading example?
Aclass A { A() {} A(int x) {} }
Bclass A { A() {} A() {} }
Cclass A { void A() {} void A(int x) {} }
Dclass A { A() {} int A(int x) { return x; } }
✗ Incorrect
Constructors must have different parameter lists. Option A shows two constructors with different parameters.
If a class has constructors: A(), A(int), A(String), which constructor is called by new A("hello")?
AA()
BNone
CA(int)
DA(String)
✗ Incorrect
The constructor with a String parameter matches the argument "hello".
Can constructor overloading have two constructors with the same parameter types but different return types?
AYes, always
BOnly if one is static
CNo, constructors do not have return types
DYes, if return types are different
✗ Incorrect
Constructors do not have return types, so overloading depends on parameter lists only.
What happens if you define no constructor in a Java class?
AJava provides a default no-argument constructor
BThe class cannot be instantiated
CCompilation error
DYou must define at least one constructor
✗ Incorrect
Java automatically provides a default no-argument constructor if none is defined.
Explain constructor overloading and why it is useful in Java.
Think about how you can create objects in different ways.
You got /3 concepts.
Describe how Java chooses which constructor to call when multiple constructors exist.
Focus on how Java matches arguments to constructors.
You got /3 concepts.
Practice
(1/5)
1.
What is constructor overloading in Java?
easy
A. Having multiple constructors with different parameter lists in the same class.
B. Using the same constructor name with the same parameters multiple times.
Constructor overloading means having more than one constructor in a class, each with a different set of parameters.
Step 2: Check options against definition
Having multiple constructors with different parameter lists in the same class. correctly states this. Options B, C, and D are incorrect because they describe invalid or unrelated concepts.
Final Answer:
Having multiple constructors with different parameter lists in the same class. -> Option A
Quick Check:
Constructor overloading = multiple constructors with different parameters [OK]
Hint: Look for multiple constructors with unique parameter lists [OK]
Common Mistakes:
Thinking constructors must have different names
Confusing overloading with overriding
Believing constructors cannot have parameters
2.
Which of the following constructor declarations is correct for overloading?
public class Car {
public Car() { }
public Car(String model) { }
public Car(int year) { }
public Car(String model, int year) { }
}
easy
A. Only constructors with one parameter are allowed.
B. Constructors must have different names, so this is incorrect.
C. All constructors have different parameter lists, so all are correct.
D. Constructors cannot have parameters, so only the first is correct.
Solution
Step 1: Check parameter lists of constructors
Each constructor has a unique parameter list: no parameters, one String, one int, and two parameters.
Step 2: Verify constructor overloading rules
Constructors can share the same name but must differ in parameters. This code follows that rule.
Final Answer:
All constructors have different parameter lists, so all are correct. -> Option C
Quick Check:
Different parameters = valid overloading [OK]
Hint: Check if parameter lists differ, not constructor names [OK]
Common Mistakes:
Thinking constructors need different names
Believing constructors cannot have parameters
Confusing method overloading rules with constructors
3.
What will be the output of the following code?
class Box {
int width, height;
Box() {
width = 10;
height = 10;
}
Box(int w, int h) {
width = w;
height = h;
}
void display() {
System.out.println(width + "," + height);
}
}
public class Test {
public static void main(String[] args) {
Box b1 = new Box();
Box b2 = new Box(5, 15);
b1.display();
b2.display();
}
}
medium
A. 10,10
5,15
B. 5,15
10,10
C. 10,10
10,10
D. Compilation error due to constructor overloading
Solution
Step 1: Identify which constructors are called
b1 uses the no-argument constructor setting width and height to 10. b2 uses the two-parameter constructor setting width=5 and height=15.
Step 2: Understand display output
b1.display() prints "10,10" and b2.display() prints "5,15" on separate lines.
Hint: Match constructor parameters to object creation [OK]
Common Mistakes:
Assuming default constructor sets zero values
Mixing order of printed outputs
Thinking overloading causes errors here
4.
Find the error in the following code snippet:
class Person {
String name;
int age;
Person(String n) {
name = n;
}
Person(String n, int a) {
name = n;
age = a;
}
Person() {
this("Unknown");
this(0);
}
}
medium
A. Missing return type in constructors.
B. Cannot call two constructors using 'this()' in the same constructor.
C. Constructor names must be different for overloading.
D. No error; code is correct.
Solution
Step 1: Analyze constructor chaining rules
In Java, a constructor can call only one other constructor using 'this()' and it must be the first statement.
Step 2: Identify the error in the no-argument constructor
The no-argument constructor calls 'this("Unknown")' and then 'this(0)', which is not allowed.
Final Answer:
Cannot call two constructors using 'this()' in the same constructor. -> Option B
Quick Check:
Only one 'this()' call allowed per constructor [OK]
Hint: Only one 'this()' call allowed as first line in constructor [OK]
Common Mistakes:
Trying to call multiple constructors with 'this()'
Thinking constructor names must differ
Forgetting 'this()' must be first statement
5.
Consider a class Employee with overloaded constructors:
class Employee {
String name;
int id;
double salary;
Employee(String name) {
this.name = name;
this.id = 0;
this.salary = 0.0;
}
Employee(String name, int id) {
this(name);
this.id = id;
}
Employee(String name, int id, double salary) {
this(name, id);
this.salary = salary;
}
void display() {
System.out.println(name + "," + id + "," + salary);
}
}
public class Main {
public static void main(String[] args) {
Employee e = new Employee("Alice", 101, 75000.0);
e.display();
}
}
What will be the output when running Main?
hard
A. Alice,101,0.0
B. Alice,0,0.0
C. Compilation error due to constructor chaining
D. Alice,101,75000.0
Solution
Step 1: Trace constructor calls for Employee("Alice", 101, 75000.0)
The three-parameter constructor calls the two-parameter constructor with ("Alice", 101), which calls the one-parameter constructor with ("Alice").
Step 2: Understand field assignments
The one-parameter constructor sets name="Alice", id=0, salary=0.0. The two-parameter constructor updates id=101. The three-parameter constructor updates salary=75000.0.
Step 3: Output values
After all calls, name="Alice", id=101, salary=75000.0, so display prints "Alice,101,75000.0".
Final Answer:
Alice,101,75000.0 -> Option D
Quick Check:
Constructor chaining updates fields stepwise [OK]
Hint: Follow constructor calls step-by-step to track field values [OK]