Its only in case of overridden methods that the JVM checks the actual object and invokes if the overridden version.
Dont we need an actual object to invoke a method?
Yes, but we do know that the Sub class instance can be assigned to the super class reference and the reference type decides which methods can be invoked on the instance.
For example if you had an extra method in the sub class say placement2() which is not present in the Super class, then when you try to invoke
you would get an error because the compiler is not aware of the existence of the method placement2() in the class T.
But in this case i dont have an object of T,still i am able to invoke method of T by just using T's reference?
As you are invoking the placement() from the class T itself, the compiler is able to locate the method against the reference of type T. So its at compile time that these bindings happen.
But when you try to move the main method out from class T into class K, things would be different- You get a compiler error as at compile time the compiler says that the method has private access.