Hey all,
Can someone please help me understand these two questions.
Question 72.
Read the following piece of code carefully.
import java.io.IOException;
public class Question72
{
public Question72() throws IOException
{
throw new IOException();
}
}
Assume that the defination of Question72E begins with the line
public class Question72E extends Question72
It is required that none of the constructors of Question72E should throw any checked exception.
1.It can be achived by placing the call to the superclass with a super keyword , which is placed in a try block with a catch block to handle the IOException thrown by the super class.
2.It can be achived by avoiding explicit calls to the base class constructor.
3. It cannot be done in the Java Laungage with the above definition of the base class.
-----------------------------------------------------------------The correct answer to this one is 3.I could not understand why the method in answer 1 will not work!!!
Question 73.
Read the following piece of code carefully. (This is an extention to question 72.)
public abstact class Question73 extends Question72
{
public abstract void method();
}
An attempt to compile the above class definition
1.will cause a compiler error - non-abstract classes cannot be extended to abstract classes.
2.will cause a compiler error - a constructor must be provided which may or may not throw an IOException
3.will cause a compiler error - a constructor must be provided
which must throw an IOException or one of its super types.
4. will not cause any compiler error. The class definition is perfectly legal.
-----------------------------------------------------------------
The correct answer is 3 again.But why?
Waiting for help.
Thanks,
Gazala.