មេរៀនទី១៩: Runtime Polymorphism

Runtime polymorphismDynamic Method Dispatch គឺដំណើរការហៅ call ទៅលើ method ត្រូវបានដោះស្រាយពេល runtime ខណ:ពេល compile។

Upcasting

កាលណាអថេរ Parent class យោងតាម object នៃ Child class
Javaclass A{}
class B extends A{}
A a=new B();//upcasting

Example of Runtime Polymorphism
ក្នុងឧទាហរណ៍នេះ យើងបង្កើតពីរ classes Bike និង Splendar ដែល Splendar class ពង្រីក Bike class ហើយ overrides លើវា run() method។  យើងហៅ run method ដោយអថេរ reference នៃ Parent class។
class Bike{
void run(){System.out.println(“running”);}
}
class Splender extends Bike{
void run(){System.out.println(“running safely with 60km”);}

public static void main(String args[]){
Bike b = new Splender();//upcasting
b.run();
}
}
Output:running safely with 60km.
ឧទាហរណ៍ SBI, ICICI និង AXIS banks នឹងផ្តល់ 8%, 7% និង 9% តម្លៃការប្រាក់។
Javaclass Bank{
int getRateOfInterest(){return 0;}
}

class SBI extends Bank{
int getRateOfInterest(){return 8;}
}

class ICICI extends Bank{
int getRateOfInterest(){return 7;}
}
class AXIS extends Bank{
int getRateOfInterest(){return 9;}
}

class Test3{
public static void main(String args[]){
Bank b1=new SBI();
Bank b2=new ICICI();
Bank b3=new AXIS();
System.out.println(“SBI Rate of Interest: “+b1.getRateOfInterest());
System.out.println(“ICICI Rate of Interest: “+b2.getRateOfInterest());
System.out.println(“AXIS Rate of Interest: “+b3.getRateOfInterest());
}
}
Output:
SBI Rate of Interest: 8
ICICI Rate of Interest: 7
AXIS Rate of Interest: 9

Runtime Polymorphism ជាមួយចំនួនទិន្នន័យ data member
Method មិនត្រូវបាន override លើ data members, ដូច្នេះ runtime polymorphism មិនអាចសម្រេច ដោយ data members។

តួនាទី: Runtime polymorphism មិនអាចសំរេច ដោយ data members។
class Bike{
int speedlimit=90;
}
class Honda3 extends Bike{
int speedlimit=150;

public static void main(String args[]){
Bike obj=new Honda3();
System.out.println(obj.speedlimit);//90
}
Output:90
Runtime Polymorphism ជាមួយ Multilevel Inheritance
class Animal{
void eat(){System.out.println(“eating”);}
}

class Dog extends Animal{
void eat(){System.out.println(“eating fruits”);}
}

class BabyDog extends Dog{
void eat(){System.out.println(“drinking milk”);}

public static void main(String args[]){
Animal a1,a2,a3;
a1=new Animal();
a2=new Dog();
a3=new BabyDog();

a1.eat();
a2.eat();
a3.eat();
}
}
Output: eating
eating fruits
drinking Milk

ព្យាយាមជាមួយលទ្ធផល Output
class Animal{
void eat(){System.out.println(“animal is eating…”);}
}

class Dog extends Animal{
void eat(){System.out.println(“dog is eating…”);}
}

class BabyDog1 extends Dog{
public static void main(String args[]){
Animal a=new BabyDog1();
a.eat();
}}
Output: Dog is eating