Bird
Raised Fist0
Kotlinprogramming~5 mins

Companion object with interfaces in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a companion object in Kotlin?
A companion object is a special object inside a class that allows you to define members that belong to the class itself, not to instances. It's like a static member in other languages.
Click to reveal answer
intermediate
Can a companion object implement an interface in Kotlin?
Yes, a companion object can implement interfaces. This allows the companion object to provide specific behavior defined by the interface.
Click to reveal answer
beginner
How do you call a function defined in a companion object that implements an interface?
You call it using the class name, like ClassName.functionName(), because companion object members behave like static members.
Click to reveal answer
intermediate
Example: What does this code do?
<pre>interface Logger {
    fun log(message: String)
}

class MyClass {
    companion object : Logger {
        override fun log(message: String) {
            println("Log: $message")
        }
    }
}</pre>
This code defines an interface Logger with a log function. The companion object of MyClass implements Logger and provides the log function. You can call MyClass.log("Hello") to print "Log: Hello".
Click to reveal answer
intermediate
Why use interfaces with companion objects?
Using interfaces with companion objects helps organize code by defining contracts for static-like behavior. It makes the companion object behave predictably and allows polymorphism.
Click to reveal answer
What keyword defines a companion object inside a Kotlin class?
Astatic
Bcompanion
Cobject
Dinterface
Can a companion object implement an interface in Kotlin?
AYes, companion objects can implement interfaces
BOnly in Kotlin versions before 1.0
COnly if the interface is marked as 'companion'
DNo, companion objects cannot implement interfaces
How do you call a function defined in a companion object?
AUsing the class name directly
BUsing an instance of the class
CUsing the 'new' keyword
DUsing the 'static' keyword
What is the main benefit of implementing an interface in a companion object?
ATo make the class abstract
BTo allow the companion object to be instantiated
CTo define a contract for static-like behavior
DTo override instance methods
Which of these is a correct way to define a companion object implementing an interface Logger?
Acompanion object Logger { ... }
Bobject companion : Logger { ... }
Ccompanion Logger object { ... }
Dcompanion object : Logger { ... }
Explain how a companion object can implement an interface in Kotlin and why this might be useful.
Think about how companion objects act like static members and how interfaces define behavior.
You got /5 concepts.
    Write a simple Kotlin class with a companion object that implements an interface with one function, and show how to call that function.
    Start with interface, then class with companion object, then call the function.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a companion object in Kotlin?
      easy
      A. To create multiple instances of a class
      B. To inherit from multiple classes
      C. To define instance variables for each object
      D. To hold static-like members that belong to the class, not instances

      Solution

      1. Step 1: Understand companion object role

        A companion object is a special object inside a class that holds members shared by all instances.
      2. Step 2: Compare with instance members

        Unlike instance variables, companion object members belong to the class itself, acting like static members.
      3. Final Answer:

        To hold static-like members that belong to the class, not instances -> Option D
      4. Quick Check:

        Companion object = static-like members [OK]
      Hint: Companion object = static members inside class [OK]
      Common Mistakes:
      • Thinking companion object creates instances
      • Confusing companion object with instance variables
      • Believing companion object can inherit multiple classes
      2. Which of the following is the correct syntax to declare a companion object implementing an interface MyInterface inside a class MyClass?
      easy
      A. class MyClass { object companion : MyInterface { } }
      B. class MyClass { companion object : MyInterface { } }
      C. class MyClass { companion MyInterface object { } }
      D. class MyClass { companion object implements MyInterface { } }

      Solution

      1. Step 1: Recall companion object syntax

        The correct syntax is companion object followed by a colon and the interface name.
      2. Step 2: Check each option

        class MyClass { companion object : MyInterface { } } matches the correct syntax. The other options have incorrect keywords or order.
      3. Final Answer:

        class MyClass { companion object : MyInterface { } } -> Option B
      4. Quick Check:

        companion object : InterfaceName [OK]
      Hint: Use 'companion object : Interface' syntax [OK]
      Common Mistakes:
      • Using 'implements' keyword instead of ':'
      • Swapping 'object' and 'companion' keywords
      • Omitting the colon before interface name
      3. Given the code below, what will be printed when MyClass.printMessage() is called?
      interface Printer {
          fun printMessage()
      }
      
      class MyClass {
          companion object : Printer {
              override fun printMessage() {
                  println("Hello from companion")
              }
          }
      }
      
      fun main() {
          MyClass.printMessage()
      }
      medium
      A. Hello from companion
      B. No output
      C. Compilation error
      D. Runtime exception

      Solution

      1. Step 1: Understand companion object implementing interface

        The companion object implements Printer and overrides printMessage to print a message.
      2. Step 2: Calling printMessage on class

        Calling MyClass.printMessage() calls the companion object's method, printing the message.
      3. Final Answer:

        Hello from companion -> Option A
      4. Quick Check:

        Companion object method called = prints message [OK]
      Hint: Companion object methods called on class directly [OK]
      Common Mistakes:
      • Expecting instance creation before method call
      • Thinking printMessage is not accessible on class
      • Assuming compilation error due to interface
      4. Identify the error in the following Kotlin code snippet:
      interface Logger {
          fun log(message: String)
      }
      
      class Service {
          companion object Logger {
              override fun log(message: String) {
                  println("Log: $message")
              }
          }
      }
      medium
      A. Companion object must use ':' to implement interface, not name after object
      B. Missing override keyword for log function
      C. Interface Logger cannot be implemented by companion object
      D. Companion object cannot have functions

      Solution

      1. Step 1: Check companion object declaration

        The code uses companion object Logger, which names the object but does not implement the interface.
      2. Step 2: Correct syntax for interface implementation

        To implement Logger, it should be companion object : Logger with a colon.
      3. Final Answer:

        Companion object must use ':' to implement interface, not name after object -> Option A
      4. Quick Check:

        Use ':' to implement interface in companion object [OK]
      Hint: Use ':' not name to implement interface in companion object [OK]
      Common Mistakes:
      • Confusing object name with interface implementation
      • Omitting colon before interface name
      • Thinking companion object cannot implement interfaces
      5. You want to create a Kotlin class Calculator with a companion object that implements an interface Operations having a method add(a: Int, b: Int): Int. How can you call add without creating an instance of Calculator?
      interface Operations {
          fun add(a: Int, b: Int): Int
      }
      
      class Calculator {
          companion object : Operations {
              override fun add(a: Int, b: Int): Int = a + b
          }
      }
      hard
      A. Call Operations.add(5, 3)
      B. Create instance and call Calculator().add(5, 3)
      C. Call Calculator.add(5, 3)
      D. Call Calculator.companion.add(5, 3)

      Solution

      1. Step 1: Understand companion object access

        Companion object members can be called directly on the class name like Calculator.add() (syntactic sugar) or explicitly via Calculator.Companion.
      2. Step 2: Check method call options

        Calculator.add(5, 3) is the standard direct call. B requires an instance which doesn't have the method. C calls the interface directly (wrong). D uses incorrect casing ("companion" instead of "Companion").
      3. Final Answer:

        Call Calculator.add(5, 3) -> Option C
      4. Quick Check:

        Class.method() = companion access [OK]
      Hint: Companion object methods called on class directly [OK]
      Common Mistakes:
      • Using lowercase 'companion' instead of 'Companion'
      • Creating instance unnecessarily
      • Trying to call interface name directly
      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