Difference between overloading & overriding

Property

Overloading

Overriding

Method names Must be same Must be same
Arguments Must be different (at least order) Must be same (including order)
Method Signatures Must be different Must be same
Return types No restriction Co variant return types are allowed
Private, static & final methods Can be overloaded Cannot be overridden
Access modifiers No restriction We can’t reduce the scope of the access modifier, but we can increase
Throws clause No restriction If the child class throws any checked exception, then it is compulsory, the  parent class method  should throw the same checked exception.
Method Resolution Always takes care compiler based on the reference type Always takes care by JVM based on runtime object.
Also known as Compile time polymorphism or static polymorphism or early binding Runtime polymorphism, dynamic polymorphism or late binding

Create a class with Constructor and setter/getter

Account.java


public class Account {
    private String accNo;
    private String name;
    private double balance;

    public Account(String accNo, String name, double balance) {
        this.accNo = accNo;
        this.name = name;
        this.balance = balance;
    } 

    public String getAccNo() {
        return accNo;
    }

    public String getName() {
        return name;
    }

    public double getBalance() {
        return balance;
    }
}

TestAccount.java


public class TestAccount {

	public static void main(String[] args) {
		//create Account
		Account acct1 = new Account("A101", "Sridhar" , 1000 );
		System.out.println(acct1.getAccNo() + "-" + acct1.getName() + "-" + acct1.getBalance());

		//create Account
		Account acct2 = new Account("A102","Arun", 1000);
		System.out.println(acct2.getAccNo() + "-" + acct2.getName() + "-" + acct2.getBalance());
	}
}

Create a Class

Account.java


 

public class Account {

    public String accNo;

    public String name;

    public double balance;

}

TestAccount.java


 

public class TestAccount {

	public static void main(String[] args) {
		 //create Account
        Account acct1 = new Account();
        acct1.accNo = "A101";
        acct1.name = "Sridhar";
        acct1.balance = 1000;

        System.out.println(acct1.accNo + "-" + acct1.name + "-" + acct1.balance);

        //create Account
        Account acct2 = new Account();
        acct2.accNo = "A102";
        acct2.name = "Vimal";
        acct2.balance = 1000;

        System.out.println(acct2.accNo + "-" + acct2.name + "-" + acct2.balance);
    }
}

Create a class and add a constructor

Account.java



public class Account {

    public String accNo;

    public String name;

    public double balance;

    public Account(String accNo, String name, double balance) {
        this.accNo = accNo;
        this.name = name;
        this.balance = balance;
    }

}

TestAccount.java


 

public class TestAccount {

public static void main(String[] args) {

//create Account
Account acct1 = new Account(“A101”, “Sridhar” , 1000 );
System.out.println(acct1.accNo + “-” + acct1.name + “-” + acct1.balance);

//create Account
Account acct2 = new Account(“A102″,”Vimal”, 1000);
System.out.println(acct2.accNo + “-” + acct2.name + “-” + acct2.balance);
}

}