জাভাতে, দু'জনের ঘনিষ্ঠ সম্পর্ক রয়েছে। এর কারণ জাভা পদ্ধতিটি আহ্বানের জন্য একটি কৌশল ব্যবহার করে যার নাম "ডায়নামিক প্রেরণ"। যদি আমার থাকে
public class A {
public void draw() { ... }
public void spin() { ... }
}
public class B extends A {
public void draw() { ... }
public void bad() { ... }
}
...
A testObject = new B();
testObject.draw(); // calls B's draw, polymorphic
testObject.spin(); // calls A's spin, inherited by B
testObject.bad(); // compiler error, you are manipulating this as an A
তারপরে আমরা দেখতে পাই যে বি এর উত্তরাধিকার সূত্রে spin
এ। তবে যাইহোক, আমরা যখন বস্তুটিকে এমন একটি প্রকারের মতো করে চালিত করার চেষ্টা করি তখনও আমরা বি এর আচরণ পেয়ে থাকি draw
। draw
আচরণ বহুরুপী হয়।
কিছু ভাষায়, পলিমারফিজম এবং উত্তরাধিকারের সাথে খুব বেশি ঘনিষ্ঠভাবে সম্পর্ক নেই। সি ++ এ, উদাহরণস্বরূপ, ভার্চুয়াল হিসাবে ঘোষিত নয় এমন ফাংশনগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয়, তবে গতিশীলভাবে প্রেরণ করা হবে না, সুতরাং আপনি উত্তরাধিকার ব্যবহার করার পরেও আপনি সেই বহুবিক আচরণ পাবেন না।
জাভাস্ক্রিপ্টে, প্রতিটি ফাংশন কল গতিশীলভাবে প্রেরণ করা হয় এবং আপনার টাইপিং দুর্বল। এর অর্থ হল আপনারা নিজের মতো করে কোনও সম্পর্কযুক্ত অবজেক্টের গুচ্ছ রাখতে পারেন, তাদের draw
উপর একটি ফাংশন পুনরাবৃত্তি করতে এবং ফাংশনটি কল করতে পারেন এবং প্রতিটি ঠিকঠাক আচরণ করবে। উত্তরাধিকারের প্রয়োজন ছাড়াই আপনার নিজস্ব পলিমারফিক ড্র হয়।