Java Programming - Declarations and Access Control - Discussion

Discussion Forum : Declarations and Access Control - Finding the output (Q.No. 10)
10.
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() ); 
    } 
}
4, 4
4, 5
5, 4
Compilation fails.
Answer: Option
Explanation:

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.

Discussion:
13 comments Page 2 of 2.

Nitin said:   6 years ago
Why its necessary to override super class method, can't we treat them different method and access it by class instance.

Monika said:   4 years ago
@Nitin.

It is possible. But in this case method name same. So overloading is also not possible.

Nikhil said:   4 years ago
In java, method overloading is not possible by changing the return type of the method only because of ambiguity.


Post your comments here:

Your comments will be displayed after verification.