Question
class Super
{
public Integer getLength()
{
return new Integer(4);
}
}
public class Sub extends Super
{
public Long getLength()
{
return new Long(5);
}
public static void main(String[] args)
{
Super sooper = new Super();
Sub sub = new Sub();
System.out.println(
sooper.getLength().toString() + "," + sub.getLength().toString() );
}
}
What will be the output of the program?
class Super
{
public Integer getLength()
{
return new Integer(4);
}
}
public class Sub extends Super
{
public Long getLength()
{
return new Long(5);
}
public static void main(String[] args)
{
Super sooper = new Super();
Sub sub = new Sub();
System.out.println(
sooper.getLength().toString() + "," + sub.getLength().toString() );
}
}
Answer: Option D
Was this answer helpful ?
Option D is correct, compilation fails - The return type of getLength( ) in the super
class is an object of reference type Integer and the return type in the sub class is
an object of reference type Long. In other words, it is not an override because of
the change in the return type and it is also not an overload because the argument
list has not changed.
Was this answer helpful ?
Submit Solution