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
Compiler is right. The line
A a = new SubB();
"Means "create instance of class SubB and assign it to variable of type A".
This means that from this point the variable a's type is A, not SubB. But foo() defined in A throws unchecked Exception that must be re-thrown or caught by caller. This is what compiler tells you.
At line
a.foo()
compiler already "does not know" that the real instance type is SubB. It treats it as A.