The reason why inner classes cannot have static members is because static members are usually instantiated when the program starts . However, an inner class depends on having an instance of its enclosing class in order to create it and then access it’s members.