Bird
Raised Fist0
Kotlinprogramming~5 mins

Primary constructor and init blocks in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a primary constructor in Kotlin?
A primary constructor is a concise way to declare and initialize class properties directly in the class header.
Click to reveal answer
beginner
What is the purpose of an init block in Kotlin?
An init block contains initialization code that runs when an instance of the class is created, allowing extra setup beyond property declarations.
Click to reveal answer
intermediate
How do primary constructor parameters relate to properties?
Parameters in the primary constructor can be used to initialize properties by prefixing them with val or var, making them class properties.
Click to reveal answer
intermediate
Can a Kotlin class have multiple init blocks? What happens when it does?
Yes, a class can have multiple init blocks. They run in the order they appear in the class, each executing during object creation.
Click to reveal answer
advanced
Explain the order of execution when creating an object with a primary constructor and init blocks.
First, the primary constructor parameters are passed. Then, property initializers run. After that, all init blocks execute in order. Finally, the object is fully created.
Click to reveal answer
What keyword do you use to declare a property in the primary constructor?
Aclass
Bfun
Cval or var
Dinit
When is the code inside an init block executed?
AWhen the program ends
BWhen the class is compiled
CWhen a method is called
DWhen an object of the class is created
Can you have multiple init blocks in a Kotlin class?
AYes, and they run in the order they appear
BNo, only one init block is allowed
CYes, but only the first one runs
DNo, init blocks are not allowed
What happens if you declare a primary constructor parameter without val or var?
AIt is just a parameter and not a property
BIt becomes a global variable
CIt causes a compile error
DIt becomes a property automatically
Which of these is the correct order during object creation?
AProperty initializers → primary constructor → init blocks
BPrimary constructor → property initializers → init blocks
CInit blocks → primary constructor → property initializers
DPrimary constructor → init blocks → property initializers
Describe how you use a primary constructor and init blocks together to initialize a Kotlin class.
Think about how constructor parameters and init blocks complement each other.
You got /4 concepts.
    Explain why you might use multiple init blocks in a Kotlin class.
    Consider how splitting initialization into parts can help keep code clear.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the init block in a Kotlin class with a primary constructor?
      easy
      A. To declare secondary constructors
      B. To run additional code right after the primary constructor initializes properties
      C. To define class-level constants
      D. To override functions from a superclass

      Solution

      1. Step 1: Understand the role of primary constructor

        The primary constructor initializes the properties of the class when an object is created.
      2. Step 2: Identify the purpose of the init block

        The init block runs immediately after the primary constructor to execute extra setup code or validations.
      3. Final Answer:

        To run additional code right after the primary constructor initializes properties -> Option B
      4. Quick Check:

        Init block = extra setup after constructor [OK]
      Hint: Init blocks run right after primary constructor [OK]
      Common Mistakes:
      • Confusing init block with secondary constructor
      • Thinking init block declares constants
      • Assuming init block overrides superclass methods
      2. Which of the following is the correct syntax to declare a primary constructor with two parameters name and age in Kotlin?
      easy
      A. class Person(name: String, age: Int) { }
      B. class Person { constructor(name: String, age: Int) }
      C. class Person(name String, age Int) { }
      D. class Person(name: String; age: Int) { }

      Solution

      1. Step 1: Recall Kotlin primary constructor syntax

        Primary constructor parameters are declared in parentheses after the class name, separated by commas, with types after colons.
      2. Step 2: Check each option

        class Person(name: String, age: Int) { } uses correct syntax: parentheses, commas, colons for types. Options A, B, and D have syntax errors.
      3. Final Answer:

        class Person(name: String, age: Int) { } -> Option A
      4. Quick Check:

        Primary constructor = class Name(params) [OK]
      Hint: Primary constructor parameters go inside parentheses after class name [OK]
      Common Mistakes:
      • Using semicolons instead of commas
      • Omitting colons before types
      • Confusing primary with secondary constructor syntax
      3. What will be the output of this Kotlin code?
      class User(val name: String) {
          init {
              println("Welcome, $name!")
          }
      }
      
      fun main() {
          val user = User("Anna")
      }
      medium
      A. Compilation error
      B. Welcome, name!
      C. No output
      D. Welcome, Anna!

      Solution

      1. Step 1: Understand object creation and init block

        When creating User("Anna"), the primary constructor sets name to "Anna" and then the init block runs.
      2. Step 2: Analyze the init block output

        The init block prints "Welcome, $name!" where $name is replaced by "Anna".
      3. Final Answer:

        Welcome, Anna! -> Option D
      4. Quick Check:

        Init block prints welcome message with name [OK]
      Hint: Init block runs on object creation, prints with property values [OK]
      Common Mistakes:
      • Expecting no output because println is inside class
      • Confusing variable interpolation syntax
      • Thinking init block runs only on demand
      4. Identify the error in this Kotlin class:
      class Product(val id: Int) {
          init {
              println("Product ID: $productId")
          }
      }
      medium
      A. Init block cannot use println
      B. Primary constructor must be empty
      C. Variable productId is not declared
      D. Class must have a secondary constructor

      Solution

      1. Step 1: Check variable usage in init block

        The init block tries to print productId, but the class has only id declared.
      2. Step 2: Confirm variable declaration

        Since productId is not declared anywhere, this causes a compilation error.
      3. Final Answer:

        Variable productId is not declared -> Option C
      4. Quick Check:

        Use declared property names in init block [OK]
      Hint: Use exact property names inside init blocks [OK]
      Common Mistakes:
      • Assuming init block can't use println
      • Thinking primary constructor must be empty
      • Believing secondary constructor is mandatory
      5. You want to create a Kotlin class Employee with a primary constructor that takes name and salary. You also want to print a welcome message and calculate a 10% bonus right after object creation. Which is the best way to do this?
      hard
      A. Use primary constructor for parameters and an init block to print message and calculate bonus
      B. Use only secondary constructors for all initialization
      C. Put all code inside the primary constructor parentheses
      D. Use companion object to run code after object creation

      Solution

      1. Step 1: Understand primary constructor role

        Primary constructor is for receiving parameters and initializing properties simply.
      2. Step 2: Use init block for extra setup

        Init block runs after constructor to print messages and calculate bonus, keeping code organized.
      3. Step 3: Evaluate other options

        Secondary constructors are unnecessary here; code can't go inside constructor parentheses; companion object is unrelated.
      4. Final Answer:

        Use primary constructor for parameters and an init block to print message and calculate bonus -> Option A
      5. Quick Check:

        Primary constructor + init block = clean setup [OK]
      Hint: Use init block for extra setup after primary constructor [OK]
      Common Mistakes:
      • Trying to put logic inside constructor parentheses
      • Using secondary constructors unnecessarily
      • Misusing companion object for instance initialization
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard