A reference to the object which invokes the non-static method is passed IMPLICITLY to the non-static method. The method call t.piggy(sName) invokes the method piggy. Apart from the reference t, piggy has its own reference to the object referenced by t. It has been passed implicitly. So, when start() is called it is actually t.start().