মূল পার্থক্য - জাভাতে উত্তরাধিকার বনাম ইন্টারফেস
জাভা হল একটি প্রোগ্রামিং ভাষা যা সান মাইক্রোসিস্টেম দ্বারা তৈরি করা হয়েছে। জাভা বিভিন্ন অ্যাপ্লিকেশন ডেভেলপ করতে ব্যবহার করা যেতে পারে। এটি একটি বহু-প্যারাডাইম ভাষা যা অবজেক্ট-ওরিয়েন্টেড, স্ট্রাকচার্ড ইত্যাদি সমর্থন করে। জাভার প্রধান সুবিধা হল এটি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) সমর্থন করে। প্রোগ্রামার ক্লাস এবং অবজেক্ট তৈরি করতে পারে। ওওপিতে চারটি পিলার রয়েছে। সেগুলো হল উত্তরাধিকার, পলিমরফিজম, বিমূর্ততা এবং এনক্যাপসুলেশন। উত্তরাধিকার এবং ইন্টারফেস OOP এর সাথে সম্পর্কিত। উত্তরাধিকার এবং ইন্টারফেসের মধ্যে মূল পার্থক্য হল যে উত্তরাধিকার হল বিদ্যমান শ্রেণীগুলি থেকে নতুন ক্লাস আহরণ করা এবং একটি ইন্টারফেস হল বিমূর্ত ক্লাস এবং একাধিক উত্তরাধিকার প্রয়োগ করা।
জাভাতে উত্তরাধিকার কি?
উত্তরাধিকার কোড পুনরায় ব্যবহারযোগ্যতা অর্জন করতে পারে। উত্তরাধিকার একটি বিদ্যমান ক্লাসের বৈশিষ্ট্য এবং পদ্ধতি পুনরায় ব্যবহার করতে সাহায্য করে। পুরানো শ্রেণী ব্যবহার করে নতুন শ্রেণী বের করার পদ্ধতিকে উত্তরাধিকার বলে। পুরানো ক্লাস প্যারেন্ট ক্লাস বা সুপার ক্লাস নামে পরিচিত। প্রাপ্ত শ্রেণীকে শিশু শ্রেণী বা উপশ্রেণী বলা হয়।
জাভা উত্তরাধিকারের সিনট্যাক্স নিম্নরূপ।
শ্রেণীর সাবক্লাস_নাম সুপারক্লাস_নাম প্রসারিত করে {
পরিবর্তনশীল ঘোষণা;
পদ্ধতি ঘোষণা;
}
উত্তরাধিকার ধারণাটি নিম্নলিখিত উদাহরণ ব্যবহার করে ব্যাখ্যা করা যেতে পারে। অনুমান করুন যে নীচে A বলে একটি শ্রেণী রয়েছে।
পাবলিক ক্লাস এ{
সর্বজনীন অকার্যকর যোগফল(){
System.out.println(“সমষ্টি”);
}
}
যদি আমরা বিদ্যমান ক্লাস পরিবর্তন না করে একটি নতুন পদ্ধতি যোগ করতে চাই তবে আমরা এটি নিম্নরূপ করতে পারি।
পাবলিক ক্লাস B{
সর্বজনীন অকার্যকর সাব(){
System.out.println("সাব");
}
}
প্রোগ্রামার ক্লাস A যোগফল ব্যবহার করতে উত্তরাধিকার ব্যবহার করতে পারে।
পাবলিক ক্লাস B ক্লাস এ বাড়িয়েছে{
সর্বজনীন অকার্যকর সাব(){
System.out.println("সাব");
}
}
প্রধান ফাংশনে, B এর একটি অবজেক্ট তৈরি করা সম্ভব এবং সাব(), যেটি ক্লাস B এবং sum() এর অন্তর্গত, যেটি উত্তরাধিকার ব্যবহার করে A শ্রেণীর অন্তর্গত।
পাবলিক স্ট্যাটিক ভ্যায়েড মেইন (স্ট্রিং আর্গস){
B obj=নতুন B();
obj.sub();
obj.sum();
}
উত্তরাধিকারের বিভিন্ন প্রকার রয়েছে। সেগুলি হল একক উত্তরাধিকার, একাধিক উত্তরাধিকার, বহু-স্তরের উত্তরাধিকার এবং শ্রেণিবদ্ধ উত্তরাধিকার। একক উত্তরাধিকারে, একটি বেস ক্লাস এবং একটি প্রাপ্ত শ্রেণী রয়েছে।মাল্টি-লেভেল ইনহেরিট্যান্সে, তিনটি শ্রেণী আছে, বেস ক্লাস, ইন্টারমিডিয়েট ক্লাস এবং ডিরাইভড ক্লাস। মধ্যবর্তী শ্রেণী বেস শ্রেণী থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হয় এবং মধ্যবর্তী শ্রেণী থেকে প্রাপ্ত শ্রেণী উত্তরাধিকার সূত্রে প্রাপ্ত হয়। অনুক্রমিক উত্তরাধিকারে, একটি বেস ক্লাস এবং অনেকগুলি প্রাপ্ত শ্রেণী রয়েছে। হাইব্রিড উত্তরাধিকার নামে পরিচিত একটি বিশেষ প্রকার রয়েছে। এটি দুই বা ততোধিক ধরণের উত্তরাধিকারের সংমিশ্রণ।
চিত্র 01: উত্তরাধিকার
একাধিক উত্তরাধিকারে অনেকগুলি বেস ক্লাস এবং একটি প্রাপ্ত শ্রেণী রয়েছে। অনুমান করুন যে ক্লাস A এবং B বেস ক্লাস। ক্লাস C হল উদ্ভূত শ্রেণী। যদি A এবং B উভয় শ্রেণীরই একই পদ্ধতি থাকে এবং প্রোগ্রামার সেই পদ্ধতিটিকে ডেরাইভড ক্লাস থেকে কল করে, তাহলে এটি একটি অস্পষ্টতার সমস্যা সৃষ্টি করবে। দুটি ক্লাসের উত্তরাধিকার একটি কম্পাইল-টাইম ত্রুটির কারণ হতে পারে।অতএব, একাধিক উত্তরাধিকার জাভাতে সমর্থিত নয়। সেই সমস্যাটি কাটিয়ে উঠতে একটি ইন্টারফেস ব্যবহার করা যেতে পারে৷
জাভাতে ইন্টারফেস কি?
অ্যাবস্ট্রাকশন হলো বাস্তবায়নের বিবরণ লুকিয়ে রাখার এবং ব্যবহারকারীর কাছে শুধুমাত্র কার্যকারিতা প্রদর্শন করার একটি প্রক্রিয়া। বিমূর্ত ক্লাস বা ইন্টারফেস ব্যবহার করে বিমূর্ততা অর্জন করা যেতে পারে। একটি বিমূর্ত পদ্ধতি একটি বাস্তবায়ন ছাড়া একটি পদ্ধতি. অন্তত একটি বিমূর্ত পদ্ধতি সহ একটি ক্লাস একটি বিমূর্ত শ্রেণী। একটি বিমূর্ত শ্রেণীর উদাহরণ নিম্নরূপ।
বিমূর্ত ক্লাস A{
বিমূর্ত অকার্যকর যোগফল();
}
অনুমান করুন যে A এবং B হিসাবে দুটি বিমূর্ত শ্রেণী রয়েছে। A এবং B এর বিমূর্ত পদ্ধতি প্রয়োগ করতে, একটি নতুন ক্লাস C তৈরি করা হয়েছে। তারপর C ক্লাস A এবং B উভয়ই প্রসারিত করা উচিত, তবে একাধিক উত্তরাধিকার জাভাতে সমর্থিত নয়। অতএব, ইন্টারফেস ব্যবহার করা উচিত। ইন্টারফেসগুলি পদ্ধতিগুলি ঘোষণা করতে ব্যবহার করা যেতে পারে, তবে পদ্ধতিগুলি সংজ্ঞায়িত করা সম্ভব নয়। ইন্টারফেস ব্যবহার করে একটি বস্তু তৈরি করা সম্ভব নয়।ক্লাস সি ইন্টারফেস A এবং B এ সমস্ত পদ্ধতি প্রয়োগ করা উচিত।
ইন্টারফেস A{
অকার্যকর যোগফল();
}
ইন্টারফেস বি{
অকার্যকর সাব();
}
ক্লাস সি A, B{ প্রয়োগ করে
সর্বজনীন অকার্যকর যোগফল(){
System.out.println("সমষ্টি");
}
সর্বজনীন অকার্যকর সাব(){
System.out.println("বিয়োগ");
}
}
এখন, মূল প্রোগ্রামে C এর একটি অবজেক্ট তৈরি করা এবং উভয় পদ্ধতিতে কল করা সম্ভব।
পাবলিক স্ট্যাটিক ভ্যায়েড মেইন (স্ট্রিং আর্গস) {
C obj=নতুন C();
obj.sum();
obj.sub();
}
সুতরাং, ইন্টারফেসগুলি একাধিক উত্তরাধিকার প্রয়োগ করতে ব্যবহার করতে পারে৷
ইন্টারফেসের আরেকটি ব্যবহার হল এটি নিরাপত্তা প্রদান করে। নিচের কোডটি পড়ুন।
ইন্টারফেস A {
অকার্যকর যোগফল ();
}
শ্রেণী B A { প্রয়োগ করে
সর্বজনীন অকার্যকর যোগফল () {
System.out.println("সমষ্টি");
}
সর্বজনীন অকার্যকর গুন () {
System.out.println("গুণ");
}
}
B এর একটি বস্তু তৈরি করার সময়, যোগফল () এবং গুণ () উভয় পদ্ধতিকে কল করা সম্ভব। প্রোগ্রামার যদি multiply () ফাংশন ব্যবহার করে সীমাবদ্ধ করতে চায়, তাহলে তা নিম্নরূপ সম্ভব।
পাবলিক স্ট্যাটিক ভ্যায়েড মেইন (স্ট্রিং আর্গস){
A obj=নতুন B();
obj.sum();
}
A obj=new B(); একটি বস্তু তৈরি করবে। এটি A টাইপ এবং মেমরিটি B হিসাবে বরাদ্দ করা হয়েছে। যোগফল() কল করা সম্ভব কিন্তু multiply() কার্যকর করতে পারে না। এই সীমাবদ্ধতা ইন্টারফেস ব্যবহার করে করা হয়৷
জাভাতে উত্তরাধিকার এবং ইন্টারফেসের মধ্যে মিল কী?
- উভয় ধারণাই অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং এর সাথে সম্পর্কিত
- দুটিই IS-A সম্পর্কের প্রতিনিধিত্ব করে।
জাভাতে উত্তরাধিকার এবং ইন্টারফেসের মধ্যে পার্থক্য কী?
জাভাতে উত্তরাধিকার বনাম ইন্টারফেস |
|
উত্তরাধিকার হল একটি OOP ধারণা যা বিদ্যমান ক্লাসগুলি থেকে নতুন ক্লাস নেওয়ার জন্য। | ইন্টারফেস হল OOP-তে বিমূর্ততা এবং একাধিক উত্তরাধিকার প্রয়োগ করার একটি প্রক্রিয়া। |
ব্যবহার | |
উত্তরাধিকার কোড পুনরায় ব্যবহারযোগ্যতা প্রদান করে। | ইন্টারফেস বিমূর্ততা এবং একাধিক উত্তরাধিকার প্রদান করে। |
সারাংশ – জাভাতে উত্তরাধিকার বনাম ইন্টারফেস
জাভা একটি মাল্টি-প্যারাডাইম প্রোগ্রামিং ভাষা যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং সমর্থন করে।উত্তরাধিকার এবং ইন্টারফেসগুলি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের সাথে সম্পর্কিত। উত্তরাধিকার এবং ইন্টারফেসের মধ্যে পার্থক্য হল যে উত্তরাধিকার হল বিদ্যমান ক্লাসগুলি থেকে নতুন ক্লাস নেওয়া এবং ইন্টারফেসগুলি হল বিমূর্ত ক্লাস এবং একাধিক উত্তরাধিকার প্রয়োগ করা৷
জাভাতে ইনহেরিটেন্স বনাম ইন্টারফেসের PDF সংস্করণ ডাউনলোড করুন
আপনি এই নিবন্ধটির PDF সংস্করণ ডাউনলোড করতে পারেন এবং উদ্ধৃতি নোট অনুসারে অফলাইন উদ্দেশ্যে এটি ব্যবহার করতে পারেন। দয়া করে এখানে পিডিএফ সংস্করণ ডাউনলোড করুন Java ইনহেরিটেন্স এবং ইন্টারফেসের মধ্যে পার্থক্য