একটি পদ্ধতি কি অন্যকে ওভারলোড করে, বা উভয় পদ্ধতিই "অতিরিক্ত বোঝা"


13

আমি যদি এই পদ্ধতিটি তৈরি করি

public void foo()

এবং তারপরে আমি এর মতো একটি ওভারলোডেড সংস্করণ তৈরি করব

public void foo( string bar )

আমরা কি বলি যে দ্বিতীয় ফাংশনগুলি প্রথমটি ওভারলোড করে, বা উভয় পদ্ধতিই সমানভাবে "ওভারলোডড"?

এটি বোঝায় (আমার মনে হয়), সেখানে একটি বেস টাইপ ফাংশন রয়েছে, যা ওভারলোড হচ্ছে, অন্য কোনও ফাংশন দ্বারা (কিছুটা উত্তরাধিকারের মতো, তবে বাস্তবে নয়)।

ধরে নিই যে একটি পদ্ধতি "অন্যকে ওভারলোড" করতে পারে, এটি "ওভারলোডার" এবং "ওভারলোডি" এর মতো পদও বোঝায় যদি এটি কোনও শব্দ হয়। তবে এটি মোটেও বোধ হয় না, বিশেষত যেহেতু আপনার বেশ কয়েকটি ওভারলোড থাকতে পারে।

যখন আমি একটি ওভারলোডেড পদ্ধতি তৈরি করার প্রক্রিয়াটি লিখতে চেয়েছিলাম তখন আমি এই প্রশ্নটি পেয়েছিলাম এবং আমি এটিকে লেখার সবচেয়ে সঠিক পদ্ধতিটি চেয়েছিলাম।

উদাহরণ:

  • আমি ওভারলোডিং করছি foo
  • আমি ওভারলোডিং করছি fooসঙ্গেfoo( string bar )
  • আমি একটি ওভারলোডেড পদ্ধতি তৈরি করছি
  • আমি ফু ওভারলোডেড করছি

হ্যাঁ, এই ধরণের আমাকে ভাবতে লাগল, আমি কী করব তা নিশ্চিত নই। অনলাইনে ফাংশন ওভারলোডিংয়ের বর্ণনা রয়েছে এমন কয়েক হাজার, না থাকলে হাজার হাজার, তবে প্রথম নজরে আমি এর কোনও সমাধান খুঁজে পাইনি।


আমি কেন ওভারলোড শব্দটি এর জন্য ব্যবহৃত হয়েছিল তা জানতে চাই। এটি কোনও অর্থবোধ করে বলে মনে হয় না। কী বোঝা হচ্ছে? এটি আবার কীভাবে বা অতিরিক্তভাবে লোড হয়?
মার্টিন মাট

@ মার্টিনম্যাট আপনি কি থিটন দ্বারা গ্রাহকৃত উত্তরটি পড়েছেন এবং তাতে কিন্ডলের মন্তব্য ? তারা কী বোঝা হচ্ছে (বোঝা যাচ্ছে) বোঝানোর জন্য তারা ভাল কাজ করছেন বলে মনে হয়।
বিট্রি

আমি সেগুলি পড়েছি, তারা ধারণাটি ব্যাখ্যা করে, নৃতত্ত্বের নয়।
মার্টিন মাট

উত্তর:


29

অতিরিক্ত লোড সম্পর্কে কথা বলার সময়, ফাংশনটির নামটি ওভারলোড হয়, ফাংশনটি নিজেই নয়। নামের ওভারলোডিং ফাংশনগুলি হ'ল "ওভারলোড" এবং নাম ওভারলোড, তবে একে অপরের নয়। আপনার উদাহরণে "public void foo()"এবং "public void foo( string bar )"উভয়ই "foo" নামটি ওভারলোড করে। অতএব, কোনও ফাংশনের ওভারলোডার এবং ওভারলোডির ক্ষেত্রে আপনি কথা বলতে পারবেন না, কারণ তাদের সরাসরি সম্পর্ক নেই।

আপনার উদাহরণগুলিতে, আপনি বলতে পারেন যে আপনি "foo" (নাম) "foo (স্ট্রিং বার)" (ফাংশন) দিয়ে ওভারলোড করছেন, তবে আপনি এটি বলতে পারবেন না যে আপনি একটি ওভারলোডেড পদ্ধতি তৈরি করেছেন, কারণ পদ্ধতিগুলি কখনই ওভারলোড হয় না। আপনি বলতে পারেন যে আপনি একটি ওভারলোডিং পদ্ধতি তৈরি করেন। "ওভারলোড ফু বানানো" তৈরি করা "ওভারলোড ফু" বলার একটি আরও খারাপ উপায়।


তবে কি তবে অন্য ফাংশনটির একই রকম না থাকলেও প্রতিটি ফাংশন তার নামটি ওভারলোড করে না?
1912

আমি উপরের সাধারণ প্রশ্নের উত্তর হিসাবে এর সাথে একমত। তবে যদি একটি অপরটিকে একটি থেকে অন্যটিকে ফাংশন বলে, তবে আমি এমন একটি ধারণাটি উপলব্ধি করতে পারি যার মধ্যে একটি অপরটিকে অতিরিক্ত চাপিয়ে দেয়।
জোশুয়া ড্রাক

3
@ বামফাম চূড়ান্ত: "ওভারলোডিং" বলতে বোঝায় যে আপনি স্বাভাবিকের চেয়ে বেশি "লোডিং" করছেন, সুতরাং শব্দটি কেবল তখনই ব্যবহৃত হয় যখন আপনার একই নামের সাথে একাধিক ফাংশন থাকে।
21

@ গাইন্ডাল সহ একমত সফ্টওয়্যার বিকাশের প্রসঙ্গে "ওভারলোড" শব্দের অর্থ "একাধিক অর্থ নির্ধারণ করা"; , একটি ডিবি (অর্থের অন্যান্য ক্ষেত্রের উপর নির্ভর করে) কলাম ওভারলোডিং ওভারলোডিং মাপদণ্ডগুলি (অর্থ অন্যান্য আবশ্যক পরামিতি উল্লেখ উপর নির্ভর করে), ইত্যাদি একটি পদ্ধতি অন্য কোনো জমিদার না, কিন্তু আছে যদি এক সঙ্গে একটির বেশি পদ্ধতি নাম , নাম "হয় ওভারলোড "।
কুতুলু মাইক

15

আমি কেবল বলতে চাই fooযে অতিরিক্ত বোঝা। এখানে অবশ্যই কোনও মাস্টার / দাস বা পিতামাতার / সন্তানের সম্পর্ক চলছে না।


2
সম্মত হন - এটি সেই পদ্ধতি বা অপারেটরের নাম যা অতিরিক্ত লোড হয়েছে, পদ্ধতিটি নয়। ওভাররাইডিংয়ের সাথে বিভ্রান্ত হওয়ার দরকার নেই , যেখানে একটি সাবক্লাসে প্রদত্ত পদ্ধতির প্রয়োগ প্যারেন্ট ক্লাসে প্রয়োগের পরিপূরক হয়।
কালেব

1
আমি এটির সাথেও একমত, তবে আমার মতে থাইটন এটির ব্যাখ্যা দেওয়ার চেয়ে আরও ভাল কাজ করে। আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ !
উইলিয়াম ডি'হ্যাসিলার

3

আমি মনে করি যে এটি প্রকাশ করার একটি ভাল উপায় হ'ল চূড়ান্ত ফলাফলের উপর ফোকাস করা, সময়ের সাথে ক্লাসে করা পরিবর্তনগুলিতে নয়। সুতরাং, "আমি 'foo (অন্যান্য পরামিতি)' দিয়ে 'ওভারলোড' না বলার পরিবর্তে, আপনি" foo () 'এবং' foo (অন্যান্য পরামিতি) সহ একটি ওভারলোডেড ফাংশন বলেছিলেন ""

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.