IMO you're **fixing** the behaviour above where a sub-Series can have different class its super Series, for consistency this should also share class when empty. :)

Maybe `self._constructor` is better ?

Maybe class should be determined from dtype passed to the Index constructor:
```
In [11]: pd.Index([], dtype=int)  # expect Int64Index ?
Out[11]: Index([], dtype='object')
```
But I guess that is a sep issue.