Polymorphism and Method Overloading and Overriding- Example0008
This example of Polymorphism(One of the characteristics of the - Both Compile and Runtime shown here.Method Overloading (Compile time Polymirphism)- Two methods defined in both parent and child Classes with same name but without differnet arguments
Method Overriding (Run time Polymorphism) - Two methods defined with same name and same inputs, but output can be different
package com.swprogramdeveloper;
Keyword: java, polymorphism, method overloading, method overriding, compile polymorphism, runtime polymorphism, arguments
//Textual presentation of an object, how it will look like in the memory
//Whatever we write in class is actually belong to object. Note: if you want something for class, need to write static
class Product {
//Attribute
int pid;
String name;
int price;
//Constructor
Product() {
System.out.println(">>Product Object Constructed");
}
//Methods
//Method one to initialize data
void setProductDetails(int pid, String name, int price){
this.pid=pid;
this.name=name;
this.price=price;
}
//Method to display data
void showProductDetails(){
System.out.println("-----Product ID: "+pid+"----------");
System.out.println("Name:\t"+name);
System.out.println("Price:\t"+price);
System.out.println("---------------------------");
}
}
//IS-A relation and extends
//Example without defining method overloading and Method overriding
class Mobile extends Product {
// Constructor
Mobile() {
System.out.println("--Mobile Constructor created---");
}
}
//IS-A relation and extends example with additional attribute for the Child Product
//Example with defining method overloading and Method overriding
class MobileA extends Product {
// Additional attribute
String os;
int ram;
// Constructor
MobileA() {
System.out.println("--MobileA Constructor created---");
}
// Method one to initialize data
// Method name same as that of Parent Class with additional inputs
// This is Method Overloading - Compile time Polymorphism, also called Static Polymorphism
void setProductDetails(int pid, String name, int price, String os, int ram){
this.pid=pid;
this.name=name;
this.price=price;
this.os=os;
this.ram=ram;
}
// Method one to display data
// Method name same as that of Parent Class - Input is same, Output is different
// This is Method Overriding - Run time Polymorphism
void showProductDetails(){
System.out.println("-----Product ID: "+pid+"----------");
System.out.println("Name:\t"+name);
System.out.println("Price:\t"+price);
System.out.println("OS:\t" + os);
System.out.println("RAM:\t" + ram);
System.out.println("---------------------------");
}
}
public class Main {
public static void main(String[] args) {
// write your code here
// Creating class from extended class
System.out.println("---Output of extended mobile class from product----");
//without method overloading or overriding
Mobile mobile1 = new Mobile();
mobile1.setProductDetails(980,"mi note2",23000);
mobile1.showProductDetails();
//example- method overloading and method overriding
MobileA mobile1A = new MobileA();
mobile1A.setProductDetails(980,"mi note2",23000,"Android",128);
mobile1A.showProductDetails();
}
}
Output0008
==========
---Output of extended mobile class from product----
>>Product Object Constructed
--Mobile Constructor created---
-----Product ID: 980----------
Name: mi note2
Price: 23000
---------------------------
>>Product Object Constructed
--MobileA Constructor created---
-----Product ID: 980----------
Name: mi note2
Price: 23000
OS: Android
RAM: 128
---------------------------
Process finished with exit code 0
Comments
Post a Comment