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 |
OOPS
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);
}
}