Bird
Raised Fist0
Javaprogramming~10 mins

Constructor execution flow in Java - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to call the parent class constructor from the child class.

Java
class Parent {
    Parent() {
        System.out.println("Parent constructor");
    }
}

class Child extends Parent {
    Child() {
        [1];
        System.out.println("Child constructor");
    }
}
Drag options to blanks, or click blank then click option'
Asuper()
Bthis()
CParent()
Dparent()
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using this() instead of super()
Calling Parent() like a method
Forgetting to call the parent constructor
2fill in blank
medium

Complete the code to call another constructor in the same class.

Java
class Example {
    Example() {
        this(10);
        System.out.println("Default constructor");
    }

    Example(int x) {
        System.out.println("Constructor with value: " + [1]);
    }
}
Drag options to blanks, or click blank then click option'
A10
Bthis
Cx
Dvalue
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using this instead of the parameter name
Using the literal 10 instead of the parameter
Using an undefined variable
3fill in blank
hard

Fix the error in the constructor chaining code.

Java
class Test {
    Test() {
        [1];
        System.out.println("No-arg constructor");
    }

    Test(int a) {
        System.out.println("Constructor with int: " + a);
    }
}
Drag options to blanks, or click blank then click option'
Athis(5)
Bthis()
CTest(5)
Dsuper(5)
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using super(5) when no parent constructor with int exists
Calling Test(5) like a method
Using this() which calls no-arg constructor causing recursion
4fill in blank
hard

Fill both blanks to complete the constructor chaining and print the correct messages.

Java
class Base {
    Base() {
        System.out.println("Base constructor");
    }
}

class Derived extends Base {
    Derived() {
        [1];
        System.out.println("Derived constructor");
    }

    Derived(int x) {
        System.out.println("Derived with int: " + [2]);
    }
}
Drag options to blanks, or click blank then click option'
Athis(5)
Bsuper()
Cx
D5
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Using super() instead of this(5) in the no-arg constructor
Printing the literal 5 instead of the parameter x
Not chaining constructors properly
5fill in blank
hard

Fill all three blanks to create a class with constructor chaining and parent constructor call.

Java
class Alpha {
    Alpha() {
        System.out.println("Alpha default");
    }

    Alpha(String msg) {
        System.out.println(msg);
    }
}

class Beta extends Alpha {
    Beta() {
        [1];
        System.out.println("Beta default");
    }

    Beta(String msg) {
        [2];
        System.out.println("Beta with message: " + [3]);
    }
}
Drag options to blanks, or click blank then click option'
Athis("Hello")
Bsuper(msg)
Cmsg
Dsuper()
Attempts:
3 left
πŸ’‘ Hint
Common Mistakes
Calling super() instead of this() in the no-arg constructor
Not calling super(msg) in the string constructor
Printing a variable not defined or the wrong variable

Practice

(1/5)
1. In Java, when you create an object of a child class, which constructor runs first?
easy
A. The parent class constructor
B. The child class constructor
C. Both constructors run simultaneously
D. No constructor runs automatically

Solution

  1. Step 1: Understand constructor call order

    In Java, when creating an object, the parent class constructor runs before the child class constructor.
  2. Step 2: Reason about object creation

    This ensures the parent part of the object is set up before the child adds its own setup.
  3. Final Answer:

    The parent class constructor -> Option A
  4. Quick Check:

    Parent constructor runs first [OK]
Hint: Parent constructor always runs before child constructor [OK]
Common Mistakes:
  • Thinking child constructor runs first
  • Believing constructors run simultaneously
  • Assuming constructors don't run automatically
2. Which of the following is the correct way to call a parent class constructor from a child class in Java?
easy
A. this();
B. parent();
C. super();
D. base();

Solution

  1. Step 1: Recall Java syntax for parent constructor call

    Java uses the keyword super() to call the parent class constructor explicitly.
  2. Step 2: Check other options

    parent(), this(), and base() are not valid Java syntax for this purpose.
  3. Final Answer:

    super(); -> Option C
  4. Quick Check:

    Use super() to call parent constructor [OK]
Hint: Use super() to call parent constructor explicitly [OK]
Common Mistakes:
  • Using this() instead of super()
  • Trying parent() or base() which don't exist
  • Omitting the call when needed
3. What is the output of the following Java code?
class Parent {
    Parent() {
        System.out.print("P");
    }
}
class Child extends Parent {
    Child() {
        System.out.print("C");
    }
}
public class Test {
    public static void main(String[] args) {
        new Child();
    }
}
medium
A. CP
B. PC
C. C
D. P

Solution

  1. Step 1: Identify constructor calls

    Creating new Child() calls the Child constructor, which implicitly calls the Parent constructor first.
  2. Step 2: Trace output order

    Parent constructor prints "P" first, then Child constructor prints "C".
  3. Final Answer:

    PC -> Option B
  4. Quick Check:

    Parent prints P, then Child prints C [OK]
Hint: Parent constructor output appears before child output [OK]
Common Mistakes:
  • Assuming child prints before parent
  • Ignoring implicit super() call
  • Expecting only one letter output
4. Consider this Java code snippet:
class A {
    A() {
        System.out.print("A");
    }
}
class B extends A {
    B() {
        System.out.print("B");
    }
}
class C extends B {
    C() {
        System.out.print("C");
    }
}
public class Main {
    public static void main(String[] args) {
        new C();
    }
}
What is the output, and if there is an error, how to fix it?
medium
A. ABC
B. Error: No default constructor in A
C. Error: Constructor call missing in B
D. BAC

Solution

  1. Step 1: Check constructor chaining

    Each class has a default constructor that implicitly calls its parent constructor.
  2. Step 2: Trace constructor calls

    Creating new C() calls C(), which calls B(), which calls A(), printing "A", then "B", then "C".
  3. Final Answer:

    ABC -> Option A
  4. Quick Check:

    Constructors chain up and print in order A-B-C [OK]
Hint: Default constructors chain automatically if no args [OK]
Common Mistakes:
  • Expecting error without explicit constructors
  • Thinking constructors don't chain automatically
  • Mixing output order
5. Given these classes:
class Vehicle {
    Vehicle() {
        System.out.print("V");
    }
}
class Car extends Vehicle {
    Car() {
        super();
        System.out.print("C");
    }
}
class SportsCar extends Car {
    SportsCar() {
        System.out.print("S");
    }
}
public class Demo {
    public static void main(String[] args) {
        new SportsCar();
    }
}
What is the output, and why does it appear in that order?
hard
A. CSV
B. VSC
C. SVC
D. VCS

Solution

  1. Step 1: Analyze constructor calls

    Creating new SportsCar() calls SportsCar(), which implicitly calls Car(), which calls Vehicle() via super().
  2. Step 2: Trace output sequence

    Vehicle constructor prints "V", then Car prints "C", then SportsCar prints "S".
  3. Final Answer:

    VCS -> Option D
  4. Quick Check:

    Parent to child constructor output order is V-C-S [OK]
Hint: Parent constructors run before child, print in that order [OK]
Common Mistakes:
  • Assuming SportsCar calls super() explicitly
  • Mixing output order
  • Forgetting implicit super() call in SportsCar