Classes can be nested in other classes:
class Outer() { private val bar : Int = 1 class Nested() { fun foo() = 2 } } val demo = Outer.Inner().foo() // == 2Inner 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() // == 1See Qualified this expressions to learn about disambiguation of this in inner classes.
What's next
Labels:
None

2 Comments
comments.show.hideAug 12, 2011
Alex Tkachman
Are there static inner classes?
Aug 12, 2011
Maxim Shafirov
You'll need to place inner class inside class object like:
classOuter[classobject{classInner(){}}}