Why the rule exists
Suppose it were allowed:
List<Integer> ints = new ArrayList<Integer>();
List<Number> nums = ints; // if this were legal...
nums.add(2.5); // ...you could put a Double into a List of Integers!
The list of Integers would then hold a Double, and reading it back as an Integer would blow up. Java forbids the assignment to keep that from ever happening.
The practical cost: a method declared sumStrict(List<Number>) accepts only an exact List<Number> — you cannot pass a List<Integer>. The next lesson fixes this with a wildcard.