You can never cast objects of sibling classes (sharing the same parent).
If you have a superclass Animal, and two subclasses Cat and Dog, then you wouldn't be able to cast a Cat to a Dog and vice-versa.
No inner class can have a static member.
An inner class is a member just like like a primitive variable or a reference variable. Static initialisers are usually executed when the class is loaded but this won't happen in the case of an inner class. Note however that you can have a static final variable as these are constant values.