Generally function overloading is achieved through run-time polymorphism in languages,but is the case in Java opposite? Because Oracle document says unless function is declared static ,it is loaded at run-time. So if a function is not loaded at compile time, then how can overloading occur?
            Asked
            
        
        
            Active
            
        
            Viewed 355 times
        
    -4
            
            
        - 
                    Are you sure you don't mean overriding rather than overloading? – bhspencer Jul 01 '15 at 15:10
- 
                    *Generally function overloading is achieved through run-time polymorphism in languages*. Which language achieves overloading at runtime? – Chetan Kinger Jul 01 '15 at 15:11
- 
                    I thought overloading is compile-time polymorphism and overriding is run-time polymorphism. – bhspencer Jul 01 '15 at 15:17
- 
                    Then you should see Raman Shrivastava 's answer. – Amisha Bansal Jul 01 '15 at 15:18
- 
                    His answer says "overloading is compile time polymorphism" which is what I said. – bhspencer Jul 01 '15 at 15:18
2 Answers
0
            
            
        In the case of function Overloading, it is static (compile-time) polymorphism because the compiler knows which method is to be called based on the number and type of parameters. For example:
public class FunctionOverloadingTest {
    public void display(String first) {
        System.out.println("I have one parameter");
    }
    public void display(String first, String second) {
        System.out.println("I have two parameters");
    }
    public static void main(String[] args) {
        FunctionOverloadingTest functionOverloadingTest= new FunctionOverloadingTest();
        functionOverloadingTest.display("one");
    }
}
In this case, compiler decides which display method is to be called based on the number of parameter passed in the function call.
 
    
    
        Prateek Kapoor
        
- 947
- 9
- 18
-1
            
            
        No. Method overloading is compile time polymorphism.
In simple terms we can say that a class can have more than one methods with same name but with different number of arguments or different types of arguments or both.
 
    
    
        Raman Shrivastava
        
- 2,923
- 15
- 26
- 
                    Are you sure about that? http://stackoverflow.com/questions/824763/is-polymorphism-another-term-for-overloading – bhspencer Jul 01 '15 at 15:14
- 
                    1Is it just me or is there something really wrong with the terminology of *compile-time polymorphism* – Chetan Kinger Jul 01 '15 at 15:16
- 
                    According to [this question](http://stackoverflow.com/questions/20783266/what-is-the-difference-between-dynamic-and-static-polymorphism-in-java), method overloading can be considered static (compile-time) polymorphism – AniDev Jul 01 '15 at 15:19
- 
                    My question is when function is not loaded at compile time , so how can its overloading occur? – Amisha Bansal Jul 01 '15 at 15:21
- 
                    What do you mean "when function is not loaded at compile time" all functions are loaded at compile time, thats how they are compiled – bhspencer Jul 01 '15 at 15:22
- 
                    
- 
                    @AniDev I don't know about the answers but the [Oracle](https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) documentation on `polymorphism` only talks about *overriding* methods. There is no mention of overloading in the context of `polymorphism` in the documentation. – Chetan Kinger Jul 01 '15 at 15:40
- 
                    @ChetanKinger That's fair enough; I just mentioned that other question because it seemed to worth pointing out that two SO questions disagreed about whether overloading is polymorphism or not. It seems to be more of a general programming concept than anything specific to Java. – AniDev Jul 01 '15 at 15:54
- 
                    Yes there is no mention of function overloading as polymorphism in documentation. The books say that and the previous answers on other links mention it to be compile time polymorphism. I read somewhere that unless a method is declared static,it gets memory in method area at run time, so my question was how come overloading is said to be a compile time polymorphism. While some answers also say it is not not even polymorphism. – Amisha Bansal Jul 01 '15 at 15:55
- 
                    @AmishaBansal There is no link between your previous comment and your question. – Chetan Kinger Jul 01 '15 at 16:03
