به این مفهومی که شما میگید در مبحث generics میگن Covariance و خلاصه تعریفش میشه:
اگه Integer فرزند Number پس لیست Integer هم باید فرزند لیست Number باشه.
برای پیاده سازی مفهوم Covariance در جاوا باید از upper-bound و lower-bounded بهمراه wildcard استفاده کنید:
List<Number> numbers = new ArrayList<>();
List<? super Integer> integers = new ArrayList<>();
// or List<? extends Number> integers = new ArrayList<>();
integers = numbers;