Bird
Raised Fist0
Kotlinprogramming~5 mins

Nested class independence from outer in Kotlin - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a nested class in Kotlin?
A nested class is a class defined inside another class. In Kotlin, it does not hold a reference to the outer class by default.
Click to reveal answer
beginner
How does a nested class differ from an inner class in Kotlin?
A nested class is independent and cannot access members of the outer class. An inner class holds a reference to the outer class and can access its members.
Click to reveal answer
beginner
Can a nested class access properties of its outer class in Kotlin?
No, a nested class cannot access properties or functions of the outer class unless it is marked as inner.
Click to reveal answer
intermediate
Why might you use a nested class instead of an inner class?
Use a nested class when you want to group a class logically inside another but keep it independent, avoiding unnecessary references to the outer class.
Click to reveal answer
intermediate
Show a simple Kotlin example of a nested class and explain its independence.
class Outer {
    class Nested {
        fun greet() = "Hello from Nested"
    }
}

// Usage:
val nested = Outer.Nested()
println(nested.greet())

// Explanation: Nested class does not access Outer members and can be created without an Outer instance.
Click to reveal answer
In Kotlin, what does a nested class NOT have by default?
AIts own properties and methods
BAbility to be instantiated
CReference to the outer class instance
DA name
Which keyword makes a nested class able to access outer class members?
Ainner
Bopen
Coverride
Dcompanion
How do you create an instance of a nested class in Kotlin?
Aval obj = Outer().Nested()
Bval obj = Outer.Nested()
Cval obj = Nested()
Dval obj = Outer.Inner()
Which statement is true about nested classes in Kotlin?
AThey cannot have constructors.
BThey can access private members of the outer class.
CThey must be marked with 'static' keyword.
DThey are static by default.
Why might you avoid using inner classes when not needed?
AThey increase memory usage by holding outer class references.
BThey cannot access outer class members.
CThey cannot be instantiated.
DThey are slower to compile.
Explain the difference between a nested class and an inner class in Kotlin.
Think about how each class relates to the outer class and what members they can access.
You got /4 concepts.
    Describe a situation where using a nested class is better than an inner class.
    Consider memory and design simplicity.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is true about a nested class in Kotlin compared to an inner class?
      easy
      A. A nested class can access all members of the outer class directly.
      B. A nested class does not have access to the outer class's members.
      C. A nested class is the same as an inner class.
      D. A nested class must be declared with the inner keyword.

      Solution

      1. Step 1: Understand nested class independence

        In Kotlin, a nested class is static by default and cannot access outer class members.
      2. Step 2: Compare with inner class

        Only inner classes (declared with inner) can access outer class properties and functions.
      3. Final Answer:

        A nested class does not have access to the outer class's members. -> Option B
      4. Quick Check:

        Nested class independence = A [OK]
      Hint: Remember: nested = no outer access, inner = has outer access [OK]
      Common Mistakes:
      • Confusing nested and inner classes
      • Thinking nested classes access outer members
      • Assuming nested classes require 'inner' keyword
      2. Which of the following is the correct syntax to declare a nested class inside an outer class in Kotlin?
      easy
      A. class Outer { inner class Nested { } }
      B. class Outer { nested class Nested { } }
      C. class Outer { static class Nested { } }
      D. class Outer { class Nested { } }

      Solution

      1. Step 1: Recall Kotlin nested class syntax

        In Kotlin, nested classes are declared simply inside the outer class without any keyword.
      2. Step 2: Identify incorrect options

        inner declares an inner class, static and nested keywords do not exist in Kotlin.
      3. Final Answer:

        class Outer { class Nested { } } -> Option D
      4. Quick Check:

        Nested class syntax = B [OK]
      Hint: Nested class = just class inside class, no keywords needed [OK]
      Common Mistakes:
      • Using 'static' keyword (Java style)
      • Using 'nested' keyword (not valid Kotlin)
      • Confusing inner and nested class syntax
      3. What will be the output of this Kotlin code?
      class Outer {
          val x = 10
          class Nested {
              fun printX() = "Cannot access x"
          }
      }
      fun main() {
          val nested = Outer.Nested()
          println(nested.printX())
      }
      medium
      A. Cannot access x
      B. NullPointerException
      C. Compilation error
      D. 10

      Solution

      1. Step 1: Analyze nested class access

        The nested class cannot access the outer class property x because it is not an inner class.
      2. Step 2: Check printX() function

        It returns the string "Cannot access x" explicitly, so that will be printed.
      3. Final Answer:

        Cannot access x -> Option A
      4. Quick Check:

        Nested class method output = D [OK]
      Hint: Nested classes can't access outer properties directly [OK]
      Common Mistakes:
      • Expecting nested class to print 10
      • Assuming compilation error due to access
      • Confusing inner and nested class behavior
      4. Identify the error in this Kotlin code snippet:
      class Outer {
          val y = 5
          class Nested {
              fun printY() = y
          }
      }
      medium
      A. Nested class cannot access 'y' directly; must be inner class.
      B. Missing 'inner' keyword before Nested class declaration.
      C. Property 'y' must be static to be accessed.
      D. No error; code is correct.

      Solution

      1. Step 1: Check nested class access rules

        A nested class cannot access outer class properties directly because it is static by default.
      2. Step 2: Understand how to fix

        To access outer properties, the class must be declared as inner, but here it is not.
      3. Final Answer:

        Nested class cannot access 'y' directly; must be inner class. -> Option A
      4. Quick Check:

        Nested class access error = A [OK]
      Hint: Nested class can't access outer vars; use inner class instead [OK]
      Common Mistakes:
      • Thinking 'inner' keyword is optional
      • Assuming 'y' can be static in Kotlin
      • Ignoring nested class static nature
      5. Given this Kotlin code, what is the correct way to allow Nested to access outerValue from Outer class?
      class Outer(val outerValue: Int) {
          class Nested {
              fun printValue() = "Cannot access outerValue"
          }
      }
      hard
      A. Pass outerValue as a parameter to Nested's constructor.
      B. Make outerValue static to access from Nested.
      C. Change Nested to an inner class and access outerValue directly.
      D. Use a companion object inside Nested to access outerValue.

      Solution

      1. Step 1: Understand nested vs inner class access

        Nested classes cannot access outer class properties unless declared inner.
      2. Step 2: Apply inner class to access outerValue

        Changing Nested to inner class Nested allows direct access to outerValue.
      3. Final Answer:

        Change Nested to an inner class and access outerValue directly. -> Option C
      4. Quick Check:

        Use inner class for outer access = C [OK]
      Hint: Use 'inner' keyword to access outer class properties [OK]
      Common Mistakes:
      • Trying to make properties static (not Kotlin style)
      • Passing outerValue manually instead of inner class
      • Using companion object incorrectly for instance data
      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