Saturday 19 July 2014

Java - Overloading and Overriding or basic Rules of Overloading and Overriding in java

Overloading
Method overloading deals with the notion of having two or more methods(functions) in the same class with the same name but different signature. Method return type is not comes under method signature. So, if two method and parameter is exactly same but return type is different then it is not overloading.


class OverloadingExample{
       public int add(int a, int b){
          return a+b;
       }

      // add method with different signature, hence it is overloading
      public int add(int a,int b,int c) {
        return a+b+c;
      }
}

Overloading resolved at compile time.This means that the compiler determines whether a given method(s) is correctly overloaded, and if not a compiler error is returned. Hence it is called a compile time polymorphism. 

It does not applicable to inheritance.

Overriding
Method overriding means same method signature presents in subclass as well, called method overriding. It always applicable in inheritance.It comes under runtime polymorphism. Hence depend on object at the runtime of  method linking is happening.
 
class SUPER{
   void add(int a, int b){}
class SUB extends SUPER{
   void add(int a, int b){}  // override method add here
}
overriding method can not throw checked exception which is higher in hierarchy, than checked Exception thrown by overridden method. For example if overridden method throws IOException or ClassNotFoundException, which are checked Exception, than overriding method can not throw java.lang.Exception because it comes higher in type hierarchy (it's super class of IOException and ClassNotFoundExcepiton). Overriding throws clause is not require to use in case of RuntimeException.

class SUPER{
   byte[] readInput() throws IOException{
      ////////////
   }
class SUB extends SUPER{
   byte[] readInput() throws IOException { // IOException or subclass of  IOException
    //// ///////
   }

}

overriding method can not reduce access of overridden method. It means if overridden method is defined as public than overriding method can not be protected or package private.overriding method can increase access of overridden method. this is opposite of earlier rule, according to this if overridden method is declared as protected than overriding method can be protected or public.
private, static, or final method can not be overridden.static is not part of the object but it is part of class so static can not overrided, and final means avoid overriding.


class SUPER{
  protected byte[] readInput() throws IOException{ // if here private access modifier is used then can not be  //overrided this method
      ////////////
   }
class SUB extends SUPER{
   protected  byte[] readInput() throws IOException { // same or above access modifier can be used.
    //// ///////
   }

}

6 comments:

  1. why method overloading required in java?

    ReplyDelete
    Replies
    1. Java Class By Rk: Java - Overloading And Overriding Or Basic Rules Of Overloading And Overriding In Java >>>>> Download Now

      >>>>> Download Full

      Java Class By Rk: Java - Overloading And Overriding Or Basic Rules Of Overloading And Overriding In Java >>>>> Download LINK

      >>>>> Download Now

      Java Class By Rk: Java - Overloading And Overriding Or Basic Rules Of Overloading And Overriding In Java >>>>> Download Full

      >>>>> Download LINK fg

      Delete
  2. Suppose you cerate a method sum(int i, int j), which add two number.
    After a while you realize that you require a method for adding 3 numbers or 4 numbers etc.
    So it will make a requirement that there is lots of methods with different number of argumnets and
    performing same kind of functionality on these argument.
    Without overloading you have to remember the name of method which is having exact set of parameter.
    But using overloading makes it simple just one name with different parameter.
    int sum (int i, int j) {}
    int sum (int a, int b, int c) {}

    ReplyDelete
  3. This is ok . But Is there any other reason required overloading other then improving readability or remembering a method name?

    ReplyDelete
    Replies
    1. This is main oops concept. but the main reason which I explained in comment.
      The main reason is provide better way of coding with various object.If any body will tell you calculate the sum then doesn't matter how many digit sum you have to calculate, you just add the parameter and get the sum based on your requirement.

      But still you can think of various use-case of overloading e.g. remembering method name or better readability, but these are not not main reason.

      Delete
  4. Java Class By Rk: Java - Overloading And Overriding Or Basic Rules Of Overloading And Overriding In Java >>>>> Download Now

    >>>>> Download Full

    Java Class By Rk: Java - Overloading And Overriding Or Basic Rules Of Overloading And Overriding In Java >>>>> Download LINK

    >>>>> Download Now

    Java Class By Rk: Java - Overloading And Overriding Or Basic Rules Of Overloading And Overriding In Java >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete