ওভারলোডিং এবং ওভাররাইডের মধ্যে পার্থক্য কী।
ওভারলোডিং এবং ওভাররাইডের মধ্যে পার্থক্য কী।
উত্তর:
ওভারলোডিং
ওভারলোডিং হ'ল যখন আপনার একই স্কোপের একাধিক পদ্ধতি থাকে তবে একই নামের সাথে আলাদা আলাদা স্বাক্ষর থাকে।
//Overloading
public class test
{
public void getStuff(int id)
{}
public void getStuff(string name)
{}
}
উপেক্ষা করা
ওভাররাইডিং এমন একটি নীতি যা আপনাকে একটি শিশু শ্রেণিতে কোনও পদ্ধতির কার্যকারিতা পরিবর্তন করতে দেয়।
//Overriding
public class test
{
public virtual void getStuff(int id)
{
//Get stuff default location
}
}
public class test2 : test
{
public override void getStuff(int id)
{
//base.getStuff(id);
//or - Get stuff new location
}
}
void
জন্য getStuff
মধ্যেtest2
getStuff(2, "Hello world!");
বা আমি এটি করতে পারি getStuff("Myname", "Mysurname", "Hello World!");
? যে কেউ নিশ্চিত করতে পারেন যে এটি করার উপায়?
ওভারলোডিং এবং ওভাররাইডিংয়ের সহজ সংজ্ঞা
ওভারলোডিং (টাইম পলিমারফিজম সংকলন) :: একই নাম এবং বিভিন্ন পরামিতি সহ ফাংশন
public class A
{
public void print(int x, int y)
{
Console.WriteLine("Parent Method");
}
}
public class B : A
{
public void child()
{
Console.WriteLine("Child Method");
}
public void print(float x, float y)
{
Console.WriteLine("Overload child method");
}
}
ওভাররাইডিং (রান টাইম পলিমারফিজম) :: বেস ক্লাসের মতো একই নাম এবং একই পরামিতি সহ বর্ধিত শ্রেণিতে ফাংশন, তবে বিভিন্ন আচরণের সাথে।
public class A
{
public virtual void print()
{
Console.WriteLine("Parent Method");
}
}
public class B : A
{
public void child()
{
Console.WriteLine("Child Method");
}
public override void print()
{
Console.WriteLine("Overriding child method");
}
}
আমি এমন একটি উদাহরণ ভাগ করতে চাই যা আমি যখন শিখছিলাম তখন তা আমার কাছে অনেকটা উপলব্ধি হয়েছিল:
এটি কেবলমাত্র একটি উদাহরণ যা ভার্চুয়াল পদ্ধতি বা বেস শ্রেণীর অন্তর্ভুক্ত নয়। শুধু মূল ধারণা সম্পর্কিত একটি ইঙ্গিত দিতে।
ধরা যাক একটি যানবাহন ওয়াশিং মেশিন রয়েছে এবং এটিতে "ওয়াশ" নামে পরিচিত একটি ফাংশন রয়েছে এবং গাড়িটি একধরণের হিসাবে গ্রহণ করে।
গাড়ী ইনপুট পায় এবং গাড়ী ধোয়া।
public void Wash(Car anyCar){
//wash the car
}
আসুন ওভারলোড ওয়াশ () ফাংশনটি আসুন
ওভারলোডিং:
public void Wash(Truck anyTruck){
//wash the Truck
}
ওয়াশ ফাংশনটি কেবল আগে একটি গাড়ি ধৌত করত, তবে এখন ট্রাকে ধুয়ে দেওয়ার জন্য এটির ওভারলোড।
আসুন ওয়াশ () ফাংশনটি ওভাররাইড করি
উপেক্ষা করা:
public override void Wash(Car anyCar){
//check if the car has already cleaned
if(anyCar.Clean){
//wax the car
}
else{
//wash the car
//dry the car
//wax the car
}
}
গাড়িটি ইতিমধ্যে পরিষ্কার কিনা এবং আবার ধোয়া দরকার নেই কিনা তা পরীক্ষা করার জন্য এখন ওয়াশ ফাংশনটির একটি শর্ত রয়েছে।
গাড়িটি যদি পরিষ্কার থাকে তবে কেবল এটি মোম করুন।
যদি পরিষ্কার না হয় তবে প্রথমে গাড়িটি ধুয়ে ফেলুন, তারপর এটি শুকনো করুন এবং তারপরে এটি মোম করুন
।
সুতরাং কার্যকারিতা একটি নতুন কার্যকারিতা যুক্ত করে বা সম্পূর্ণ আলাদা কিছু করে ওভাররাইড করা হয়েছে।
একজন চমকপ্রদ সাক্ষাত্কারকারীর সাথে অনুসরণ করা উচিত:
মাইকেল যেমন বলেছেন:
এবং
একই নামে তবে বিভিন্ন পরামিতি সহ একাধিক পদ্ধতি / নির্মাণকারী থাকা ওভারলোডিং বলে। এটি একটি সংকলন সময় ইভেন্ট।
Class Addition
{
int add(int a, int b)
{
return a+b;
}
int add(int a, int b, int c)
{
return a+b+c;
}
public static main (String[] args)
{
Addition addNum = new Addition();
System.out.println(addNum.add(1,2));
System.out.println(addNum.add(1,2,3));
}
}
হে; / p &:
3
6
ওভাররাইডিং একটি রান টাইম ইভেন্ট, যার অর্থ আপনার কোডের উপর ভিত্তি করে রান সময় আউটপুট পরিবর্তিত হয়।
class Car
{
public int topSpeed()
{
return 200;
}
}
class Ferrari extends Car
{
public int topSpeed()
{
return 400;
}
public static void main(String args[])
{
Car car = new Ferrari();
int num= car.topSpeed();
System.out.println("Top speed for this car is: "+num);
}
}
টপস্পিড () উভয় শ্রেণিতে একটি সাধারণ পদ্ধতি রয়েছে তা লক্ষ্য করুন। যেহেতু আমরা একটি ফেরারি ইনস্ট্যান্ট করেছি, আমরা আলাদা ফলাফল পেয়েছি।
হে; / p &:
Top speed for this car is: 400
সি # তে কীওয়ার্ড ওভাররাইড ছাড়া গোপন ওভাররাইডের মতো কোনও জাভা নেই তে ওভাররাইড পদ্ধতিতে ! এই সি # বাস্তবায়ন দেখুন:
ওভাররাইড ছাড়াই ভেরিয়েন্ট 1 : ফলাফল 200
class Car {
public int topSpeed() {
return 200;
}
}
class Ferrari : Car {
public int topSpeed(){
return 400;
}
}
static void Main(string[] args){
Car car = new Ferrari();
int num= car.topSpeed();
Console.WriteLine("Top speed for this car is: "+num);
Console.ReadLine();
}
ওভাররাইড কীওয়ার্ড সহ ভেরিয়েন্ট 2 : ফলাফল 400
class Car {
public virtual int topSpeed() {
return 200;
}
}
class Ferrari : Car {
public override int topSpeed(){
return 400;
}
}
static void Main(string[] args){
Car car = new Ferrari();
int num= car.topSpeed();
Console.WriteLine("Top speed for this car is: "+num);
Console.ReadLine();
}
কার শ্রেণিতে কীওয়ার্ড ভার্চুয়াল জাভাতে চূড়ান্ত হওয়ার বিপরীতে , এর অর্থ চূড়ান্ত নয় , আপনি গাড়িটি বিমূর্ত করতে পারলে ওভাররাইড করতে পারেন বা প্রয়োগ করতে পারেন
ছায়া কাটা = উদ্ভূত শ্রেণিতে দুটি সংজ্ঞা বজায় রাখে এবং বেস শ্রেণীর সংজ্ঞা প্রবর্তনের জন্য এটি শ্রেণিবদ্ধ সংজ্ঞা এবং তদ্বিপরীত ছায়া (গোপন) করে।
যোগ করার অন্য একটি বিষয়।
ওভারলোডিং একই নাম সহ একাধিক পদ্ধতি। একই বা ভিন্ন রিটার্নের ধরণ। বিভিন্ন পরামিতি বা পরামিতিগুলির বিভিন্ন ধরণের। একই ক্লাস বা ডেরাইভড ক্লাসে।
int যোগ করুন (int num1, int num2) int যোগ করুন (int num1, int num2, int num3) ডাবল অ্যাড (int num1, int num2) ডাবল অ্যাড (ডাবল num1, ডাবল num2)
একই শ্রেণি বা উত্পন্ন ক্লাসে সম্ভব হতে পারে। সাধারণত একই শ্রেণিতে পছন্দ হয়। উদাহরণস্বরূপ কনসোল.উরাইটলাইন () এর 19 টি ওভারলোডেড পদ্ধতি রয়েছে।
ক্লাস নির্মাণকারী, পদ্ধতি ওভারলোড করতে পারেন।
সংকলন সময় (স্ট্যাটিক / আর্লি বাইন্ডিং) বহুরূপী হিসাবে বিবেচনা করতে পারে।
================================================== ================================================== =
ওভাররাইডিং একই ক্লাসে সম্ভব নয়। শ্রেণি পদ্ধতি, বৈশিষ্ট্য, সূচক, ইভেন্টগুলি ওভাররাইড করতে পারে।
ওভাররাইড বেস পদ্ধতিটি ভার্চুয়াল, বিমূর্ত বা ওভাররাইডের মতো হওয়া উচিত। ওভাররাইড পদ্ধতিটি পরিবর্তন করতে আপনি নতুন, স্ট্যাটিক বা ভার্চুয়াল সংশোধক ব্যবহার করতে পারবেন না।
রান টাইম (ডাইনামিক / লেট বাইন্ডিং) পলিমারফিজম হিসাবে বিবেচনা করতে পারে।
Http://msdn.microsoft.com/en-us/library/6fawty39.aspx সংস্করণে সহায়তা করে
================================================== ================================================== =
সাহা্য্যকারী লিংক
http://msdn.microsoft.com/en-us/library/ms173152.aspx টাইম পলিমারফিজম বনাম রান টাইম পলিমॉर्फিজম সংকলন করুন
Overloading is a part of static polymorphism and is used to implement different method with same name but different signatures. Overriding is used to complete the incomplete method. In my opinion there is no comparison between these two concepts, the only thing is similar is that both come with the same vocabulary that is over.
Method overloading and Method overriding are 2 different concepts completely different. Method overloading is having the same method name but with different signatures. Method overriding is changing the default implementation of base class method in the derived class. Below you can find 2 excellent video tutorials explaining these concepts.
Overloading is the concept in which you have same signatures or methods with same name but different parameters and overriding, we have same name methods with different parameters also have inheritance is known as overriding.