I have a subclass and I am overriding the inherited parent method: I am removing the throws clause from the method declaration.
Now, using polymorphism, the my insta
That has happened because assigning the SubB instance to a removes the knowledge that the instance is a SubB. As an A, a.foo() can now (as far as the JLS is concerned) throw Exception.
Compile-time type knowledge is based on the declared types of the variables rather than any (hypothetical) inferred types if the variable contents.