Bird
Raised Fist0
Kotlinprogramming~10 mins

Nested class independence from outer in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a nested class inside Outer.

Kotlin
class Outer {
    class [1] {
        fun greet() = "Hello from Nested"
    }
}
Drag options to blanks, or click blank then click option'
ANested
BInner
COuterNested
DCompanion
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Inner' instead of 'Nested' which changes the class type.
Using 'Companion' which is for companion objects, not nested classes.
2fill in blank
medium

Complete the code to create an instance of the nested class.

Kotlin
val nested = Outer.[1]()
Drag options to blanks, or click blank then click option'
AInner
BCompanion
CNested
DOuterNested
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to create an instance of 'Inner' which requires an outer instance.
Using 'Companion' which is not a class.
3fill in blank
hard

Fix the error in accessing the outer class property from the nested class.

Kotlin
class Outer(val name: String) {
    class Nested {
        fun printName() = [1]
    }
}
Drag options to blanks, or click blank then click option'
Aname
B"Cannot access outer property"
Cthis@Outer.name
DOuter().name
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to use 'this@Outer.name' inside a nested class which is invalid.
Creating a new Outer instance to access name which is not the same as the outer instance.
4fill in blank
hard

Fill both blanks to create an inner class that can access the outer class property.

Kotlin
class Outer(val name: String) {
    inner class [1] {
        fun printName() = [2]
    }
}
Drag options to blanks, or click blank then click option'
AInner
BNested
Cthis@Outer.name
Dname
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Nested' instead of 'Inner' which does not allow access to outer properties.
Using just 'name' without 'this@Outer' which causes ambiguity.
5fill in blank
hard

Fill all three blanks to create a nested class with a function that returns a greeting including a passed outer class name.

Kotlin
class Outer {
    class [1] {
        fun greet(name: String) = "Hello, [2]!"
    }
}

val nested = Outer.[3]()
println(nested.greet("Alice"))
Drag options to blanks, or click blank then click option'
ANested
B$name
DInner
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Inner' instead of 'Nested' for the class name.
Using '\$name' instead of '$name' which prevents interpolation.
Trying to create an instance of 'Inner' without an outer instance.

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