KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
My Parent class is : import java.io.IOException; public class Parent { int x = 0; public int getX() throws IOException{ if(x<=0){ throw new IOException(); } return x; } } I extend this class to write a subclass Child : public class Child1 extends Parent{ public int getX(){ return x+10; } } Notice while overriding the getX method in the Child class , I have removed the throws clause from the method definition .Now it results in an anomalous behavior by the compiler which is expected : new Parent().getX() ; does not compile without enclosing it in a try-catch block , as expected . new Child().getX() ; compiles without enclosing it in a try-catch block . But the below lines of code needs the try-catch block . Parent p = new Child(); p.getX(); As this could be foreseen i.e. using a parent class reference to invoke a child method during run-time polymorphism , why the designers of Java didn't make it mandatory to include the throws clause in the method definition while overriding a particular parent class method ? I mean if a parent class method has throws clause in its definition , then while overriding it the overriding method should also include the throws clause , Ain't it ?
Tags (comma-separated)
Save Edits
Cancel