Skip to end of metadata
Go to start of metadata

Classes can be nested in other classes:

class Outer() { 
  private val bar : Int = 1 
  class Nested() { 
    fun foo() = 2 
  } 
} 
 
val demo = Outer.Inner().foo() // == 2

Inner classes

A class may be marked as inner to be able to access members of outer class. Inner classes carry a reference to an object of an outer class:

class Outer() { 
  private val bar : Int = 1 
  inner class Inner() { 
    fun foo() = bar 
  } 
} 
 
val demo = Outer().Inner().foo() // == 1

See Qualified this expressions to learn about disambiguation of this in inner classes.

What's next

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Aug 12, 2011

    Are there static inner classes?

    1. Aug 12, 2011

      You'll need to place inner class inside class object like:

      class Outer [ 
        class object { 
          class Inner() {} 
        } 
      }