I am not able to understand why Inner Class in Scala is bound to Outer Class Object and not to Outer Class itself like in Java ?. Can someone explain any logic behind it. Why Scala developers defined Inner Class in this way?
Please see example below
class Network
{
class Member()
{
val contacts = new ArrayBuffer[Member]
}
}
object checkInner extends App {
/// creating home network
val home = new Network
val father = new home.Member
val mom = new home.Member
val sister = new home.Member
father.contacts += mom
father.contacts += sister
// creating neighbour network
val neighbour = new Network
val uncle = new neighbour.Member
father.contacts += uncle (this will throw error -> type mismatch; found :
checkInner.neighbour.Member required: checkInner.home.Member)
** but it will work in Java **
}