Saturday 21 February 2015

Method Overloading in Java

If a class have multiple methods by same name but different parameters, it is known as Method Overloading.
If we have to perform only one operation, having same name of the methods increases the readability of the program.
Suppose you have to perform addition of the given numbers but there can be any number of arguments, if you write the method such as a(int,int) for two parameters, and b(int,int,int) for three parameters then it may be difficult for you as well as other programmers to understand the behaviour of the method because its name differs. So, we perform method overloading to figure out the program quickly.

Advantage of method overloading?

Method overloading increases the readability of the program.

Different ways to overload the method

There are two ways to overload the method in java
  1. By changing number of arguments
  2. By changing the data type

In java, Methood Overloading is not possible by changing the return type of the method.

1)Example of Method Overloading by changing the no. of arguments

In this example, we have created two overloaded methods, first sum method performs addition of two numbers and second sum method performs addition of three numbers.
class Calculation{  
  void sum(int a,int b){System.out.println(a+b);}  
  void sum(int a,int b,int c){System.out.println(a+b+c);}  
  
  public static void main(String args[]){  
  Calculation obj=new Calculation();  
  obj.sum(10,10,10);  
  obj.sum(20,20);  
  
  }  
}
Output:30
       40

2)Example of Method Overloading by changing data type of argument

In this example, we have created two overloaded methods that differs in data type. The first sum method receives two integer arguments and second sum method receives two double arguments.
class Calculation2{     void sum(int a,int b){System.out.println(a+b);}     void sum(double a,double b){System.out.println(a+b);}        public static void main(String args[]){     Calculation2 obj=new Calculation2();     obj.sum(10.5,10.5);     obj.sum(20,20);        }  
Output:21.0
       40

Que) Why Method Overloaing is not possible by changing the return type of method?

In java, method overloading is not possible by changing the return type of the method because there may occur ambiguity. Let's see how ambiguity may occur:
because there was problem:
class Calculation3{     int sum(int a,int b){System.out.println(a+b);}     double sum(int a,int b){System.out.println(a+b);}        public static void main(String args[]){     Calculation3 obj=new Calculation3();     int result=obj.sum(20,20); //Compile Time Error        }   }
int result=obj.sum(20,20); //Here how can java determine which sum() method should be called

Can we overload main() method?

Yes, by method overloading. You can have any number of main methods in a class by method overloading. Let's see the simple example:
class Overloading1{     public static void main(int a){     System.out.println(a);     }          public static void main(String args[]){     System.out.println("main() method invoked");     main(10);     }   }
Output:main() method invoked
       10

Method Overloading and TypePromotion

One type is promoted to another implicitly if no matching datatype is found. Let's understand the concept by the figure given below:
As displayed in the above diagram, byte can be promoted to short, int, long, float or double. The short datatype can be promoted to int,long,float or double. The char datatype can be promoted to int,long,float or double and so on.

Example of Method Overloading with TypePromotion

class OverloadingCalculation1{     void sum(int a,long b){System.out.println(a+b);}     void sum(int a,int b,int c){System.out.println(a+b+c);}        public static void main(String args[]){     OverloadingCalculation1 obj=new OverloadingCalculation1();     obj.sum(20,20);//now second int literal will be promoted to long     obj.sum(20,20,20);        }   }
Output:40
       60

Example of Method Overloading with TypePromotion if matching found

If there are matching type arguments in the method, type promotion is not performed.
class OverloadingCalculation2{     void sum(int a,int b){System.out.println("int arg method invoked");}     void sum(long a,long b){System.out.println("long arg method invoked");}        public static void main(String args[]){     OverloadingCalculation2 obj=new OverloadingCalculation2();     obj.sum(20,20);//now int arg sum() method gets invoked     }   }
Output:int arg method invoked

Example of Method Overloading with TypePromotion in case ambiguity

If there are no matching type arguments in the method, and each method promotes similar number of arguments, there will be ambiguity.
class OverloadingCalculation3{     void sum(int a,long b){System.out.println("a method invoked");}     void sum(long a,int b){System.out.println("b method invoked");}        public static void main(String args[]){     OverloadingCalculation3 obj=new OverloadingCalculation3();     obj.sum(20,20);//now ambiguity     }   }
Output:Compile Time Error

One type is not de-promoted implicitly for example double cannot be depromoted to any type implicitely.

Object and Class in Java

In this page, we will learn about java objects and classes. In object-oriented programming technique, we design a program using objects and classes.
Object is the physical as well as logical entity whereas class is the logical entity only.

Object in Java

object in java
An entity that has state and behavior is known as an object e.g. chair, bike, marker, pen, table, car etc. It can be physical or logical (tengible and intengible). The example of integible object is banking system.
An object has three characteristics:
  • state: represents data (value) of an object.
  • behavior: represents the behavior (functionality) of an object such as deposit, withdraw etc.
  • identity: Object identity is typically implemented via a unique ID. The value of the ID is not visible to the external user. But,it is used internally by the JVM to identify each object uniquely.
For Example: Pen is an object. Its name is Reynolds, color is white etc. known as its state. It is used to write, so writing is its behavior.
Object is an instance of a class. Class is a template or blueprint from which objects are created. So object is the instance(result) of a class.

Class in Java

A class is a group of objects that has common properties. It is a template or blueprint from which objects are created.
A class in java can contain:
  • data member
  • method
  • constructor
  • block
  • class and interface

Syntax to declare a class:

class <class_name>{  
    data member;  
    method;  

Simple Example of Object and Class

In this example, we have created a Student class that have two data members id and name. We are creating the object of the Student class by new keyword and printing the objects value.
class Student1{  
 int id;//data member (also instance variable)  
 String name;//data member(also instance variable)  
  
 public static void main(String args[]){  
  Student1 s1=new Student1();//creating an object of Student  
  System.out.println(s1.id);  
  System.out.println(s1.name);  
 }  
}  
Output:
Output:0 null

Instance variable in Java

A variable that is created inside the class but outside the method, is known as instance variable.Instance variable doesn't get memory at compile time.It gets memory at runtime when object(instance) is created.That is why, it is known as instance variable.

Method in Java

In java, a method is like function i.e. used to expose behaviour of an object.

Advantage of Method

  • Code Reusability
  • Code Optimization

new keyword

The new keyword is used to allocate memory at runtime.

Example of Object and class that maintains the records of students

In this example, we are creating the two objects of Student class and initializing the value to these objects by invoking the insertRecord method on it. Here, we are displaying the state (data) of the objects by invoking the displayInformation method.
class Student2{    int rollno;    String name;       void insertRecord(int r, String n){  //method     rollno=r;     name=n;    }       void displayInformation(){System.out.println(rollno+" "+name);}//method       public static void main(String args[]){     Student2 s1=new Student2();     Student2 s2=new Student2();        s1.insertRecord(111,"Karan");     s2.insertRecord(222,"Aryan");        s1.displayInformation();     s2.displayInformation();       }   }
Output:111 Karan
       222 Aryan
As you see in the above figure, object gets the memory in Heap area and reference variable refers to the object allocated in the Heap memory area. Here, s1 and s2 both are reference variables that refer to the objects allocated in memory.

Another Example of Object and Class

There is given another example that maintains the records of Rectangle class. Its exaplanation is same as in the above Student class example. class Rectangle{    int length;    int width;       void insert(int l,int w){     length=l;     width=w;    }       void calculateArea(){System.out.println(length*width);}       public static void main(String args[]){     Rectangle r1=new Rectangle();     Rectangle r2=new Rectangle();        r1.insert(11,5);     r2.insert(3,15);        r1.calculateArea();     r2.calculateArea();   }   }
Output:55 
       45 

What are the different ways to create an object in Java?

There are many ways to create an object in java. They are:
  • By new keyword
  • By newInstance() method
  • By clone() method
  • By factory method etc.
We will learn, these ways to create the object later.

Annonymous object

Annonymous simply means nameless.An object that have no reference is known as annonymous object.
If you have to use an object only once, annonymous object is a good approach. class Calculation{       void fact(int  n){     int fact=1;     for(int i=1;i<=n;i++){      fact=fact*i;     }    System.out.println("factorial is "+fact);   }      public static void main(String args[]){    new Calculation().fact(5);//calling method with annonymous object   }  
Output:Factorial is 120

Creating multiple objects by one type only

We can create multiple objects by one type only as we do in case of primitives. Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects Let's see the example:class Rectangle{    int length;    int width;       void insert(int l,int w){     length=l;     width=w;    }       void calculateArea(){System.out.println(length*width);}       public static void main(String args[]){     Rectangle r1=new Rectangle(),r2=new Rectangle();//creating two objects          r1.insert(11,5);     r2.insert(3,15);        r1.calculateArea();     r2.calculateArea();   }   }
Output:55 
       45

Java Naming conventions

Java Naming conventions

Java naming convention is a rule to follow as you decide what to name your identifiers such as class, package, variable, constant, method etc.
But, it is not forced to follow. So, it is known as convention not rule.
All the classes, interfaces, packages, methods and fields of java programming language are given according to java naming convention.

Advantage of naming conventions in java

By using standard Java naming conventions, you make your code easier to read for yourself and for other programmers. Readability of Java program is very important. It indicates that less time is spent to figure out what the code does.

Name
Convention
class name
should start with uppercase letter and be a noun e.g. String, Color, Button, System, Thread etc.
interface name
should start with uppercase letter and be an adjective e.g. Runnable, Remote, ActionListener etc.
method name
should start with lowercase letter and be a verb e.g. actionPerformed(), main(), print(), println() etc.
variable name
should start with lowercase letter e.g. firstName, orderNumber etc.
package name
should be in lowercase letter e.g. java, lang, sql, util etc.
constants name
should be in uppercase letter. e.g. RED, YELLOW, MAX_PRIORITY etc.

CamelCase in java naming conventions

Java follows camelcase syntax for naming the class, interface, method and variable.
If name is combined with two words, second word will start with uppercase letter always e.g. actionPerformed(), firstName, ActionEvent, ActionListener etc.