ক্লাসে 'ফাইনাল' ব্যবহার করা কেন এত খারাপ?


34

আমি একটি পিএইচপি ওওপি উত্তরাধিকার ওয়েবসাইট রিফ্যাক্টর করছি।

আমি " make it explicit that the class is currently not extended by anything" ক্লাসে 'ফাইনাল' ব্যবহার শুরু করতে প্রলুব্ধ হয়েছি "। আমি যদি কোনও ক্লাসে আসি তবে এটি হয়ত প্রচুর সময় সাশ্রয় করতে পারে এবং আমি ভাবছি যে আমি কোনও protectedসম্পত্তি বা পদ্ধতিটির নাম / মুছতে / পরিবর্তন করতে পারি কিনা । আমি যদি সত্যিই কোনও শ্রেণি প্রসারিত করতে চাই তবে আমি প্রসারিত করার জন্য এটি আনলক করার জন্য চূড়ান্ত কীওয়ার্ডটি সরাতে পারি ।

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

এটি সমস্ত বোধগম্য সময় সাশ্রয়ী ধারণার মতো মনে হয় .... তবে আমি প্রায়শই পড়েছি যে ক্লাসগুলি কেবল বিরল / বিশেষ অনুষ্ঠানে 'ফাইনাল' করা উচিত।

হতে পারে এটি মক অবজেক্ট তৈরির বিষয়টি স্ক্রু করে দেয় বা এর অন্যান্য পার্শ্ব প্রতিক্রিয়া রয়েছে যা আমি ভাবছি না।

আমি কী মিস করছি?


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

উদাহরণস্বরূপ, এমবিউনিট। নেট ইউনিট পরীক্ষার জন্য একটি উন্মুক্ত কাঠামো, এবং এমএসটিস্ট নয় (আশ্চর্য অবাক)। ফলস্বরূপ, আপনি এমএসএফটি থেকে 5 কে শেল আউট করতে পারেন কারণ আপনি কিছু পরীক্ষা এমএসএফটি পথ চালাতে চান। অন্যান্য পরীক্ষার রানাররা এমএসটিস্টের সাথে নির্মিত টেস্ট ডেল চালাতে পারবেন না - সবগুলিই এমএসএফটি চূড়ান্ত ক্লাসগুলির কারণে।
চাকরী

3
বিষয় সম্পর্কে কিছু ব্লগ পোস্ট: চূড়ান্ত শ্রেণি: সম্প্রসারণের জন্য উন্মুক্ত, উত্তরাধিকারের জন্য বন্ধ (মে 2014; ম্যাথিয়াস ভেরেইস দ্বারা)
হ্যাক্রে

চমৎকার নিবন্ধ। এটি এই সম্পর্কে আমার চিন্তাভাবনা বলে। আমি সেই টীকাগুলি সম্পর্কে জানতাম না যাতে এটি কার্যকর। চিয়ার্স।
JW01

"পিএইচপি 5 চূড়ান্ত কীওয়ার্ডটি প্রবর্তন করে, যা চূড়ান্তর সাথে সংজ্ঞা উপসর্গ করে শিশু শ্রেণিকে কোনও পদ্ধতিকে ওভাররাইড করা থেকে বাধা দেয় the যদি শ্রেণিটি নিজেই চূড়ান্তভাবে সংজ্ঞায়িত করা হয় তবে তা বাড়ানো যাবে না।" php.net/manual/en/language.oop5.final.php এটি মোটেই খারাপ নয়।
কালো

উত্তর:


54

আমি প্রায়শই পড়েছি যে ক্লাসগুলি কেবল বিরল / বিশেষ অনুষ্ঠানে 'ফাইনাল' করা উচিত should

যে এটা লিখেছিল সে ভুল। finalউদারভাবে ব্যবহার করুন , এতে কোনও ভুল নেই। এটি দলিল করে যে কোনও বর্গ উত্তরাধিকারের কথা মাথায় রেখে ডিজাইন করা হয়নি এবং এটি সাধারণত সব শ্রেণীর ক্ষেত্রেই ডিফল্টরূপে সত্য: এক শ্রেণীর নকশা তৈরি করা যা অর্থগতভাবে উত্তরাধিকার সূত্রে প্রাপ্ত হতে পারে কেবল কোনও finalনির্দিষ্টকারীকে অপসারণের চেয়ে বেশি লাগে না ; এটি অনেক যত্ন নেয়।

সুতরাং finalডিফল্টরূপে ব্যবহার করা কোনওভাবেই খারাপ নয়। আসলে, অনেক লোক প্রস্তাব দেয় এটি ডিফল্ট হওয়া উচিত, উদাহরণস্বরূপ জন স্কিট

হতে পারে এটি মক অবজেক্ট তৈরির দিকে নজর দেয় ...

এটি প্রকৃতপক্ষে একটি সতর্কতামূলক বিষয়, তবে যদি আপনার ক্লাসগুলি উপহাস করার প্রয়োজন হয় তবে আপনি সর্বদা ইন্টারফেসগুলিতে ফিরে আসতে পারেন। এটি কেবল বিদ্রূপের উদ্দেশ্যে সমস্ত শ্রেণি উত্তরাধিকারের জন্য উন্মুক্ত করার চেয়ে অবশ্যই শ্রেষ্ঠ।


1
1+: যেহেতু এটি উপহাস করে চলেছে; প্রতিটি "চূড়ান্ত" শ্রেণীর জন্য ইন্টারফেস বা বিমূর্ত শ্রেণি তৈরির বিষয়টি বিবেচনা করুন।
স্পোকাইক

ভাল যে কাজ একটি স্প্যানার রাখে। এই দেরিতে আগমন অন্যান্য সমস্ত উত্তরগুলির সাথে স্ববিরোধী। এখন আমি কী বিশ্বাস করব জানি না: ও। (আমার গৃহীত উত্তরটি প্রকাশিত হয়েছে এবং পুনরায় বিচারের সময় সিদ্ধান্তটি আটকে
রেখেছেন

1
আপনি নিজেই জাভা এপিআই বিবেচনা করতে পারেন এবং কতবার আপনি 'চূড়ান্ত' কীওয়ার্ডটি ব্যবহার করবেন তা বিবেচনা করতে পারেন। আসলে এটি প্রায়শই ব্যবহৃত হয় না। "ভার্চুয়াল" পদ্ধতিগুলি যখন বলা হয় (জাভাতে সমস্ত পদ্ধতি ভার্চুয়াল হয় যদি সেগুলি 'চূড়ান্ত' বা 'প্রাইভেট' হিসাবে ঘোষণা না করা হয়) বা কাস্টম প্রবর্তনের ক্ষেত্রে এটি ক্ষেত্রে ক্ষেত্রে গতিশীল বাইন্ডিংয়ের কারণে পারফরম্যান্স খারাপ হতে পারে were জাভা এপিআই ক্লাসের সাবক্লাসগুলি 'জাভা.এল.আং.স্ট্রিং' সাবক্লাসিংয়ের মতো ধারাবাহিকতা সম্পর্কিত সমস্যা তৈরি করতে পারে। একটি জাভা স্ট্রিং প্রতি সংজ্ঞা অনুযায়ী একটি মান অবজেক্ট এবং এর মানটি পরে পরিবর্তন করা উচিত নয়। একটি সাবক্লাস এই নিয়মটি ভঙ্গ করতে পারে।
জনি ডি

5
@ জনি জাভা এপিআইয়ের বেশিরভাগই খারাপভাবে ডিজাইন করা হয়েছে। মনে রাখবেন যে এর বেশিরভাগ অংশ দশ বছরেরও বেশি পুরানো এবং এর মধ্যে বেশ কয়েকটি সেরা অনুশীলনগুলি বিকাশ লাভ করেছে। তবে এর জন্য আমার কথাটি নেবেন না: জাভা ইঞ্জিনিয়াররা নিজেই তাই বলেছেন, প্রথম এবং সর্বাগ্রে জোশ ব্লচ যিনি এ সম্পর্কে বিস্তারিত লিখেছেন, যেমন কার্যকর জাভাতে । আশ্বাস দিন যে জাভা এপিআই যদি আজ বিকশিত হয় তবে এটি খুব আলাদা দেখাচ্ছে এবং finalআরও বড় ভূমিকা নেবে।
কনরাড রুডলফ

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

8

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


17
এটি সম্পূর্ণ মিথ্যা! “কেবলমাত্র আপনার কাছে কিছু সিগন্যাল করার জন্য ভাষার কীওয়ার্ড ব্যবহার করা একটি খারাপ ধারণা” ”- বিপরীতে, ভাষার কীওয়ার্ডগুলির জন্য ঠিক এটিই । আপনার অস্থায়ী ক্যাভিয়েট, "এবং আপনি কেবল তার অর্থ কী তা জানতে পারবেন", অবশ্যই সঠিক তবে এখানে প্রয়োগ হয় না; ওপি finalআশানুরূপ ব্যবহার করছে । এতে কোনও ভুল নেই। এবং সীমাবদ্ধতা প্রয়োগ করতে একটি ভাষা বৈশিষ্ট্য ব্যবহার করা একটি মন্তব্য ব্যবহার করার ক্ষেত্রে সর্বদা উন্নত।
কনরাড রুডলফ

8
@ কনরাড: ব্যতীত final"এই শ্রেণীর কোনও সাবক্লাস কখনই তৈরি করা উচিত নয়" (আইনগত কারণে বা কোনও কারণে) বোঝানো উচিত নয়, "এই শ্রেণীর বর্তমানে কোনও সন্তান নেই, সুতরাং আমি এখনও এর সুরক্ষিত সদস্যদের সাথে গণ্ডগোলের মধ্যে নিরাপদ"। এর উদ্দেশ্যটি finalহ'ল "অবাধে সম্পাদনযোগ্য" এর খুব finalবিরুদ্ধাচরণ এবং কোনও শ্রেণীর এমনকি কোনও protectedসদস্য থাকা উচিত নয় !
এসএফ

3
@ কনরাড রুডল্ফ এটি মোটেই ক্ষুদ্র নয়। অন্যান্য লোকেরা যদি পরে তাঁর ক্লাসগুলি প্রসারিত করতে চান তবে একটি মন্তব্য যা "বর্ধিত নয়" এবং একটি কীওয়ার্ডের মধ্যে রয়েছে যে "সম্ভবত প্রসারিত হতে পারে না" এর মধ্যে একটি বড় পার্থক্য রয়েছে।
জেরেমি

2
@ কনরাড রুডলফ ওওপি ভাষার নকশা সম্পর্কে কোনও প্রশ্ন আনার জন্য এটি দুর্দান্ত মতামত বলে মনে হচ্ছে। তবে আমরা জানি যে পিএইচপি কীভাবে কাজ করে এবং এটি সিল না করা পর্যন্ত এটি এক্সটেনশনের অনুমতি দেওয়ার অন্যান্য পদ্ধতির গ্রহণ করে। কীওয়ার্ডগুলিকে সংশ্লেষ করা ঠিক আছে বলে ভান করা কারণ "এটি কীভাবে হওয়া উচিত" কেবলমাত্র প্রতিরক্ষা।
জেরেমি

3
@ জেরেমি আমি কীওয়ার্ডগুলিকে বিলোপ করছি না। মূলশব্দটির finalঅর্থ, "এই শ্রেণিটি [এখনের জন্য] প্রসারিত হবে না to" আরও কিছু নয়, কিছুও কম নয়। এই দর্শনের কথা মাথায় রেখে পিএইচপি ডিজাইন করা হয়েছিল কিনা তা অপ্রাসঙ্গিক: এর কীওয়ার্ড রয়েছেfinal সর্বোপরি। দ্বিতীয়ত, পিএইচপি এর ডিজাইন থেকে তর্ক করা ব্যর্থ হতে বাধ্য, প্যাচ ওয়ার্কি এবং কেবল সামগ্রিকভাবে খারাপভাবে পিএইচপি ডিজাইন করা হয়েছে তা প্রদত্ত।
কনরাড রুডল্ফ

5

"কখন ক্লাস চূড়ান্ত ঘোষণা করবেন" সম্পর্কে একটি সুন্দর নিবন্ধ আছে । এটি থেকে কয়েকটি উদ্ধৃতি:

টিএল; ডিআর: আপনার ক্লাসগুলিকে সর্বদা করুন final, যদি তারা কোনও ইন্টারফেস প্রয়োগ করে এবং অন্য কোনও পাবলিক পদ্ধতি সংজ্ঞায়িত না হয়

আমাকে কেন ব্যবহার করতে হবে final?

  1. বিশাল উত্তরাধিকারের চূড়ান্ত প্রতিরোধের ব্যবস্থা
  2. উত্সাহজনক রচনা
  3. বিকাশকারীকে ব্যবহারকারীর সর্বজনীন এপিআই সম্পর্কে ভাবতে বাধ্য করুন
  4. বিকাশকারীকে কোনও সামগ্রীর সর্বজনীন API সঙ্কুচিত করতে বাধ্য করুন
  5. একটি finalশ্রেণিকে সর্বদা এক্সটেনসিবল করা যায়
  6. extends বিরতি encapsulation
  7. আপনার সেই নমনীয়তার দরকার নেই
  8. আপনি কোড পরিবর্তন করতে নির্দ্বিধায়

কখন এড়াতে হবে final:

চূড়ান্ত ক্লাসগুলি কেবল নিম্নলিখিত অনুমানের অধীনে কার্যকরভাবে কাজ করে:

  1. চূড়ান্ত শ্রেণি প্রয়োগ করে এমন একটি বিমূর্ততা (ইন্টারফেস) রয়েছে
  2. চূড়ান্ত শ্রেণীর সর্বজনীন এপিআই সেই ইন্টারফেসের অংশ

যদি এই দুটি প্রাক-শর্তগুলির মধ্যে একটি অনুপস্থিত থাকে, তবে আপনি সম্ভবত সময়টিতে এমন একটি পর্যায়ে পৌঁছে যাবেন যখন আপনি শ্রেণিটিকে সম্প্রসারণযোগ্য করে তুলবেন, কারণ আপনার কোডটি সত্যিকার অর্থে বিমূর্তির উপর নির্ভর করে না।

পিএস দুর্দান্ত পড়ার জন্য @ ক্রোমিয়াসকে ধন্যবাদ!


5

একটি শ্রেণীর জন্য "চূড়ান্ত" অর্থ: আপনি একটি সাবক্লাস চান? এগিয়ে যান, "চূড়ান্ত", আপনার পছন্দ মতো সাবক্লাসটি মুছুন, তবে এটি যদি কাজ না করে তবে আমার কাছে অভিযোগ করবেন না। আপনি নিজেরাই আছেন

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


-1

একটি জিনিস আপনি যা ভাবেননি এটি হ'ল ক্লাসের যে কোনও পরিবর্তনের অর্থ এটি নতুন কিউএ-পরীক্ষার মধ্য দিয়ে যেতে হয়।

আপনি যদি সত্যই সত্য বোঝেন না, তবে বিষয়গুলিকে চূড়ান্ত হিসাবে চিহ্নিত করবেন না।


ধন্যবাদ। আপনি কি আরও ব্যাখ্যা করতে পারেন? আপনি কি বোঝাতে চেয়েছেন যে আমি যদি কোনও শ্রেণি final(পরিবর্তন) হিসাবে চিহ্নিত করি তবে আমাকে কেবল এটি পুনরায় পরীক্ষা করতে হবে?
JW01

4
আমি আরও দৃ strongly়ভাবে এটি বলতে হবে। ক্লাসের ডিজাইনের কারণে কোনও এক্সটেনশন কাজ না করা না পারলে জিনিসগুলি চূড়ান্ত হিসাবে চিহ্নিত করবেন না।
এস.লট

ধন্যবাদ এস.লোট - আমি চূড়ান্ত ব্যবহারের কোড / প্রকল্পকে কীভাবে প্রভাবিত করে তা বোঝার চেষ্টা করছি। আপনি কি এমন কোনও খারাপ হরর গল্পের অভিজ্ঞতা পেয়েছেন যা আপনাকে এড়িয়ে যাওয়া ব্যবহার সম্পর্কে এতটা কৌতুকপূর্ণ হতে পরিচালিত করে final? এই প্রথম হাতের অভিজ্ঞতা?
JW01

1
@ জেডব্লিউ 01: একটি finalশ্রেণীর একটি প্রাথমিক ব্যবহারের কেস রয়েছে। আপনার পলিমারফিক ক্লাস রয়েছে যা আপনি প্রসারিত করতে চান না কারণ একটি সাবক্লাসে পলিমারফিজমটি ভেঙে যেতে পারে। finalআপনার অবশ্যই সাবক্লাস তৈরির প্রতিরোধ না করা অবধি ব্যবহার করবেন না । তা ছাড়া এটি অকেজো।
এস .লট

@ JW01, একটি প্রকাশনা সেটিং আপনি নাও হতে পারে অনুমোদিত , একটি চূড়ান্ত মুছে ফেলার জন্য কারণ এই কোড গ্রাহক পরীক্ষিত এবং অনুমোদিত নয়। তবে আপনাকে অতিরিক্ত কোড যুক্ত করার অনুমতি দেওয়া যেতে পারে (পরীক্ষার জন্য) তবে আপনি যা করতে চান তা করতে সক্ষম হতে পারবেন না কারণ আপনি নিজের ক্লাসটি বাড়িয়ে দিতে পারবেন না।

-1

'ফাইনাল' ব্যবহার করা আপনার কোড ব্যবহার করতে চায় এমন অন্যের স্বাধীনতা কেড়ে নেয়।

আপনি যে কোডটি লিখেছেন তা যদি কেবল আপনার জন্য হয় এবং জনসাধারণ বা গ্রাহকের কাছে কখনই প্রকাশ করা হয় না তবে অবশ্যই আপনি যা চান আপনার কোডটি দিয়ে করতে পারেন। অন্যথায়, আপনি অন্যকে আপনার কোড তৈরি করতে বাধা দেন। আমাকে প্রায়শই এমন একটি এপিআই দিয়ে কাজ করতে হয়েছিল যা আমার প্রয়োজনের জন্য প্রসারিত করা সহজ ছিল, তবে তারপরে আমাকে 'চূড়ান্ত' বাধা দেওয়া হয়েছিল।

এছাড়াও, প্রায়ই কোড যে ভাল হবে না তৈরি করা privateকিন্তু protected। অবশ্যই, এর privateঅর্থ "এনক্যাপসুলেশন" এবং বাস্তবায়ন বিশদ হিসাবে বিবেচিত জিনিসগুলি গোপন করুন। তবে একটি এপিআই প্রোগ্রামার হিসাবে আমি সেই পদ্ধতিটি xyzবাস্তবায়নের বিশদ হিসাবে বিবেচনা করা হয় এবং এইভাবে, ভবিষ্যতের সংস্করণে পরিবর্তন / মুছে ফেলা হতে পারে তার সত্যতাও নথিভুক্ত করতে পারি । সুতরাং সতর্কতা সত্ত্বেও যারা এই জাতীয় কোডের উপর নির্ভর করবে তারাই নিজের ঝুঁকি নিয়ে এটি করছে। তবে সে আসলে এটি করতে পারে এবং পুনরায় ব্যবহার করতে পারে (আশা করি ইতিমধ্যে পরীক্ষিত) কোডটি এবং সমাধানের সাথে দ্রুত এগিয়ে আসতে পারে।

অবশ্যই, যদি এপিআই বাস্তবায়ন ওপেন সোর্স হয় তবে তারা কেবল 'চূড়ান্ত' অপসারণ করতে পারে বা পদ্ধতিগুলিকে 'সুরক্ষিত' করতে পারে, তবে আপনি কোডটি পরিবর্তন করেছেন এবং প্যাচগুলির আকারে আপনার পরিবর্তনগুলি ট্র্যাক করতে হবে।

তবে, যদি বাস্তবায়ন বন্ধ উত্স হয় তবে আপনি কাস্টমাইজেশন / এক্সটেনশনের সম্ভাবনাগুলি সম্পর্কে কম বিধিনিষেধের সাথে অন্য কোনও এপিআইতে স্যুইচ করার সাথে সবচেয়ে খারাপ অবস্থার সন্ধান করতে বা পিছনে রয়েছেন।

মনে রাখবেন যে আমি 'চূড়ান্ত' বা 'ব্যক্তিগত' খারাপ বলে মনে করি না, তবে আমি মনে করি সেগুলি খুব বেশি ব্যবহৃত হয় কারণ প্রোগ্রামার কোড পুনরায় ব্যবহার এবং সম্প্রসারণের ক্ষেত্রে তার কোড সম্পর্কে ভাবেননি।


2
"উত্তরাধিকার কোড পুনরায় ব্যবহার নয়"।
কোয়ান্ট_দেব

2
ঠিক আছে, আপনি যদি নিখুঁত সংজ্ঞায় জেদ করেন তবে আপনি ঠিক বলেছেন। উত্তরাধিকার একটি 'হ'ল' সম্পর্কের কথা প্রকাশ করে এবং এটি হ'ল সত্য যা পলিমারফিজমের অনুমতি দেয় এবং একটি এপিআই বাড়ানোর উপায় সরবরাহ করে। কিন্তু অনুশীলনে, উত্তরাধিকার কোডটি পুনরায় ব্যবহার করতে খুব প্রায়ই ব্যবহৃত হয়। এটি বিশেষত একাধিক উত্তরাধিকারের ক্ষেত্রে। এবং আপনি যখনই একটি সুপার ক্লাসের কোড কল করবেন তখনই আপনি আসলে কোডটি পুনরায় ব্যবহার করছেন।
জনি ডি

@ কোয়ান্ট_দেব: ওওপি-তে পুনঃব্যবহারযোগ্যতা অর্থ সর্বপ্রথম বহুগর্ভের। এবং উত্তরাধিকার পলিমারফিক আচরণের জন্য একটি গুরুত্বপূর্ণ বিষয় (ইন্টারফেসটি ভাগ করে নেওয়া)।
ফ্যালকন

@ ফ্যালকন শেয়ারিং ইন্টারফেস! = ভাগ করে নেওয়ার কোড। কমপক্ষে স্বাভাবিক অর্থে নয়।
কোয়ান্ট_দেব

3
@ কোয়ান্ট_দেব: আপনি ওওপি অর্থে ভুল পুনর্ব্যবহারযোগ্যতা পেয়েছেন। এর অর্থ হ'ল ইন্টারফেস ভাগ করে নেওয়ার জন্য একটি একক পদ্ধতি অনেকগুলি ডেটাটাইপগুলিতে পরিচালনা করতে পারে। এটি ওওপি কোড পুনরায় ব্যবহারের একটি প্রধান অংশ। এবং উত্তরাধিকার স্বয়ংক্রিয়ভাবে আসুন আমরা ইন্টারফেসগুলি ভাগ করি, এভাবে কোডের পুনঃব্যবহারযোগ্যতা ব্যাপকভাবে বাড়িয়ে তোলে। এজন্য আমরা ওওপিতে পুনঃব্যবহারযোগ্যতা সম্পর্কে কথা বলি। রুটিনের সাহায্যে লাইব্রেরি তৈরি করা প্রোগ্রামিংয়ের মতোই পুরানো এবং প্রায় প্রতিটি ভাষাতেই এটি করা যায়, এটি সাধারণ। ওওপি-তে কোড-পুনঃব্যবহার এর চেয়ে বেশি।
ফ্যালকন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.