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
.