আপনি কি কখনও সুরক্ষিত সদস্য ভেরিয়েবলগুলি ব্যবহার করবেন?


98

আপনি কি কখনও সুরক্ষিত সদস্য ভেরিয়েবলগুলি ব্যবহার করবেন? সুবিধাগুলি কী এবং কী কী সমস্যাগুলি এর কারণ হতে পারে?

উত্তর:


75

আপনি কি কখনও সুরক্ষিত সদস্য ভেরিয়েবলগুলি ব্যবহার করবেন?

আপনি কীভাবে পিকিংয়ের অবস্থা লুকিয়ে রাখছেন তার উপর নির্ভর করে।

  • আপনি যদি অভ্যন্তরীণ অবস্থার কোনও ফাঁস চান না, তবে আপনার সমস্ত সদস্যের ভেরিয়েবলগুলি ব্যক্তিগত ঘোষণা করার উপায় the
  • আপনি যদি সত্যিই যত্ন নেন না যে সাবক্লাসগুলি অভ্যন্তরীণ স্থিতিতে প্রবেশ করতে পারে তবে সুরক্ষিত যথেষ্ট ভাল।

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


4
আপনি কী পেতে / সেট পদ্ধতিতে প্রাইভেট ভেরিয়েবল বনাম সুরক্ষিত ভেরিয়েবলের পারফরম্যান্স সম্পর্কে মন্তব্য করতে পারেন?
জেক

4
আমি বলব যে বোতল ঘাড় অ্যাকসেসর হিসাবে শেষ হয় (যা এটি প্রায় কখনও হয় না) প্রোফাইলিংয়ের মাধ্যমে যদি আপনি এটি খুঁজে না পান তবে এটি উদ্বিগ্ন হওয়ার মতো কিছু নয়। এমন কোনও কৌশল রয়েছে যা জেআইটিকে ইস্যুতে শেষ পর্যন্ত জিনিসগুলি সম্পর্কে আরও স্মার্ট করে তোলা যায়। জাভা উদাহরণস্বরূপ আপনি ইঙ্গিত করতে পারেন যে এ্যাকসেসরটিকে চূড়ান্ত হিসাবে চিহ্নিত করে lined যদিও সত্যই বলা যায়, সিস্টেম প্রতিষ্ঠানের সাথে এবং প্রোফাইলার দ্বারা নির্ধারিত প্রকৃত পারফরম্যান্স সমস্যার সাথে মোকাবিলা করার চেয়ে getters এবং setters এর পারফরম্যান্স অনেক কম গুরুত্বপূর্ণ।
আল্লায় লালনডে

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

পাবলিক ইন্টারফেস ব্যতীত ব্যক্তিগত সদস্যদের সাথে, তারা বাস্তবায়নের সুনির্দিষ্ট বিবরণ দেখতে পাচ্ছেন না তারা কেবল ক্লাসটি খুলতে পারেন এবং এটি সন্ধান করতে পারেন, যাতে কোনও অর্থ হয় না ?!
কালো

4
@ ব্ল্যাক স্পষ্টতই আল্লাইন বলতে বোঝায় যে তারা 'সদস্যদের অ্যাক্সেস করতে পারে না ' এবং সুতরাং তাদের বিরুদ্ধে কোড তৈরি করতে পারে না, ক্লাসের লেখককে পরে সুরক্ষিত সদস্যদের সরিয়ে / পরিবর্তন করতে মুক্ত করে। (অবশ্যই, পিম্পল আইডিয়মটি তাদের দর্শনীয়ভাবে এবং শিরোনাম সহ অনুবাদ ইউনিটগুলি থেকেও লুকিয়ে রাখতে সক্ষম করবে))
আন্ডারস্কোর_২১

32

সাধারণত, কিছু যদি ইচ্ছাকৃতভাবে জনসাধারণ হিসাবে ধারণা না করা হয়, তবে আমি এটিকে ব্যক্তিগত করি।

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

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

আমি বলব যে এটি বেশিরভাগ বিকাশকারীদের জন্য এটি ভাল (এবং সম্ভবত এটির সর্বোত্তম উপায়)।

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

এর মধ্যে কেবল আসল ব্যতিক্রমগুলি হ'ল যদি আপনি বাইনারি ডেল এর কালো বাক্স আকারে তৃতীয় পক্ষগুলিতে প্রেরণ করার ব্যবসায় থাকেন। এটি মাইক্রোসফ্ট, সেই 'কাস্টম ডেটাগ্রিড কন্ট্রোল' বিক্রেতাদের এবং এক্সটেনসিবিলিটি লাইব্রেরি সহ আরও কয়েকটি বড় অ্যাপ্লিকেশনকে অন্তর্ভুক্ত করে। আপনি যদি সেই বিভাগে না থাকেন তবে এই ধরণের জিনিস সম্পর্কে চিন্তা করার জন্য সময় / প্রচেষ্টা ব্যয় করা উপযুক্ত নয় worth


31

আজকাল সাধারণ অনুভূতি হ'ল তারা উদ্ভূত শ্রেণি এবং তাদের ঘাঁটির মধ্যে অনুপযুক্ত মিলন ঘটায়।

সুরক্ষিত পদ্ধতি / বৈশিষ্ট্যগুলির সাথে তাদের কোনও বিশেষ সুবিধা নেই (একসময় তাদের সামান্য পারফরম্যান্সের সুবিধাও হতে পারে), এবং এমন একটি যুগে আরও ব্যবহৃত হত যখন খুব গভীর উত্তরাধিকার ফ্যাশনে ছিল, যা এই মুহূর্তে নয়।


4
না করা উচিত no particular advantage over protected methods/propertiesহবে no particular advantage over *private* methods/properties?
Penghe Geng

না, কারণ আমি / উত্সযুক্ত শ্রেণি এবং তাদের ঘাঁটির মধ্যে যোগাযোগের বিভিন্ন উপায়ের সুবিধাগুলি / অসুবিধাগুলির বিষয়ে কথা বলছিলাম - এই সমস্ত কৌশলগুলি 'সুরক্ষিত' থাকবে - পার্থক্যটি তারা সদস্য পরিবর্তনশীল (ক্ষেত্র) বা বৈশিষ্ট্য / পদ্ধতি ( অর্থাত্ কোনও প্রকারের সাব্রোটাইন)।
ডিন হবে

4
দ্রুত ব্যাখ্যা করার জন্য ধন্যবাদ। আমার 6 বছরের পুরানো পোস্টে আমার প্রশ্নের এক ঘন্টার মধ্যে মূল পোস্টারের উত্তর পেয়ে আমি আনন্দিত। আপনি ভাবেন না যে বেশিরভাগ অনলাইন ফোরামে এটি ঘটতে পারে :)
Penghe Geng

10
আরও লক্ষণীয় এখনও হ'ল আমি আসলে সেই পরিমাণ সময় জুড়ে নিজের সাথে একমত ...
ডিন উইল

কোনও কনস্ট্রাক্টরের ব্যবসায়ের এক ক্রম হ'ল এটি দেখতে হবে যে সমস্ত রাষ্ট্রের ভেরিয়েবলগুলি সুস্পষ্টভাবে আরম্ভ করা হয়। আপনি যদি এই কনভেনশন মেনে চলেন তবে আপনি superকনস্ট্রাক্টটি প্যারেন্ট কন্সট্রাক্টরকে কল করতে পারেন ; এরপরে এটি প্যারেন্ট ক্লাসে প্রাইভেট স্টেট ভেরিয়েবলগুলি শুরু করার যত্ন নেবে।
ncmathsadist

9

আমার কাছে মুখ্য বিষয় হ'ল একবার আপনি যখন পরিবর্তনশীল সুরক্ষিত হয়ে যান, আপনি তারপরে আপনার শ্রেণীর কোনও পদ্ধতিই তার মানটির উপর নির্ভর করতে পারবেন না কারণ একটি সাবক্লাস সর্বদা এটিকে সীমার বাইরে রাখতে পারে।

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

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

আমার ক্লাসের কোনও সাবক্লাসও সেই গ্যারান্টিটি বেছে নিতে পারে না, কারণ তারা ভেরিয়েবলের মানগুলি প্রয়োগ করতে পারে না, এমনকি যদি এটি তাদের সাবক্লাসের পুরো পয়েন্ট হয়

উদাহরণ হিসাবে:

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

ভেরিয়েবলগুলি ব্যক্তিগত হিসাবে সীমাবদ্ধ করে, আমি তারপরে সেটার বা গেটারগুলির মাধ্যমে আমার যে আচরণটি চান তা প্রয়োগ করতে পারি।


8

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

ব্যক্তিগত সুপার-অ্যাক্সেসরদের চেয়ে সদস্যকে পরিবর্তনশীল সুরক্ষিত করার পরে আপনার সুপারক্লাস যা করতে পারে তা এখানে নয় :

  1. সম্পত্তি পড়ার সময় অলসভাবে ফ্লাইতে একটি মান তৈরি করুন। যদি আপনি কোনও সুরক্ষিত গেটর পদ্ধতি যুক্ত করেন তবে আপনি আলস্যভাবে মানটি তৈরি করতে এবং এটি আবার পাস করতে পারেন।

  2. সম্পত্তি কখন পরিবর্তন বা মুছে ফেলা হয়েছে তা জানুন। যখন সুপারক্লাস সেই ভেরিয়েবলের অবস্থা সম্পর্কে অনুমান করে তখন এটি বাগগুলি প্রবর্তন করতে পারে। ভেরিয়েবলের জন্য সুরক্ষিত সেটার পদ্ধতি তৈরি করা সেই নিয়ন্ত্রণকে রাখে।

  3. ভেরিয়েবলটি পড়তে বা লিখতে গেলে একটি ব্রেকপয়েন্ট নির্ধারণ করুন বা ডিবাগ আউটপুট যুক্ত করুন।

  4. সমস্ত সদস্য যে এটি ব্যবহার করতে পারে তা অনুসন্ধান না করেই সেই সদস্যের পরিবর্তনশীলটির নাম পরিবর্তন করুন।

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


7

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

সুরক্ষিত সদস্য ভেরিয়েবলগুলির উল্লেখযোগ্য অসুবিধাগুলি রয়েছে কারণ তারা ক্লায়েন্ট কোডকে (উপ-শ্রেণি) বেস ক্লাস শ্রেণীর অভ্যন্তরীণ অবস্থানে কার্যকরভাবে মঞ্জুরি দেয়। এটি বেস শ্রেণিকে কার্যকরভাবে তার আক্রমণকারীগুলি বজায় রাখতে বাধা দেয়।

একই কারণে, সুরক্ষিত সদস্য ভেরিয়েবলগুলি সুরক্ষিত মাল্টি-থ্রেড কোড লেখাকে উল্লেখযোগ্যভাবে আরও কঠিন করে তোলে যদি না একক থ্রেডে গ্যারান্টিযুক্ত থাকে বা না থাকে তবে।

অ্যাকসেসর / মিউটর পদ্ধতিগুলি আরও বেশি এপিআই স্থিতিশীলতা এবং রক্ষণাবেক্ষণের অধীনে প্রয়োগের নমনীয়তা সরবরাহ করে।

এছাড়াও, আপনি যদি ওও পিউরিস্ট হন তবে বার্তাগুলি প্রেরণ করে / পড়া বা স্থিতি স্থিতি অবজেক্টের সাথে সহযোগিতা / যোগাযোগ করে communicate

বিনিময়ে তারা খুব কম সুবিধা দেয়। আমি অগত্যা তাদের অন্য কারও কোড থেকে সরিয়ে দেব না, তবে আমি সেগুলি নিজেই ব্যবহার করি না।


4

বেশিরভাগ সময়, সুরক্ষিত ব্যবহার করা বিপজ্জনক কারণ আপনি আপনার শ্রেণীর কিছুটা এনক্যাপুলেশন ভাঙেন, এটি একটি খারাপ নকশাকৃত উত্সযুক্ত শ্রেণীর দ্বারা ভালভাবে ভেঙে দেওয়া যেতে পারে।

তবে আমার একটি ভাল উদাহরণ রয়েছে: আসুন আমরা বলি যে আপনি কিছু ধরণের জেনেরিক ধারক করতে পারেন। এটির অভ্যন্তরীণ বাস্তবায়ন এবং অভ্যন্তরীণ প্রবেশকারী রয়েছে। তবে আপনাকে এর ডেটাতে কমপক্ষে 3 টি পাবলিক অ্যাক্সেস সরবরাহ করতে হবে: মানচিত্র, হ্যাশ_ম্যাপ, ভেক্টর-জাতীয়। তারপরে আপনার মতো কিছু রয়েছে:

template <typename T, typename TContainer>
class Base
{
   // etc.
   protected
   TContainer container ;
}

template <typename Key, typename T>
class DerivedMap     : public Base<T, std::map<Key, T> >      { /* etc. */ }

template <typename Key, typename T>
class DerivedHashMap : public Base<T, std::hash_map<Key, T> > { /* etc. */ }

template <typename T>
class DerivedVector  : public Base<T, std::vector<T> >        { /* etc. */ }

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

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


এটি জনসাধারণের সদস্যদের চেয়ে এনক্যাপসুলেশনটি আর ভাঙে না। এটি বলার একটি সেটিংস যে উদ্ভূত শ্রেণিগুলি শ্রেণীর 'রাজ্যটি ব্যবহার করতে পারে যা শ্রেণীর ব্যবহারকারীদের কাছে উন্মুক্ত নয়।
gbjbaanb

@gbjbaanb: আপনি নিজের সাথে বিরোধিতা করছেন "জনসাধারণের সদস্যদের তুলনায় এটি" আর কোনও encapsulation ভাঙবে না "" [কেবল] উত্পন্ন শ্রেণিগুলি 'রাষ্ট্র "শ্রেণিটি ব্যবহার করতে পারে"। "সুরক্ষিত" হ'ল সরকারী এবং ব্যক্তিগত মধ্যে মধ্যম। সুতরাং "সুরক্ষিত [...] কিছুটা এনক্যাপসুলেশন ভেঙে যায়" এখনও সত্য ...
প্যাসেরেবল

আসলে, সি ++ ভাষায়, স্ট্যান্ড :: স্ট্যাকের মতো কনটেইনার অ্যাডাপ্টারগুলি "c" নামক সুরক্ষিত ভেরিয়েবলের সাথে অন্তর্নিহিত ধারক বস্তুটি প্রকাশ করবে।
জোহানেস স্কাউব - ল্যাটব

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

3

সংক্ষেপে, হ্যাঁ

সুরক্ষিত সদস্য ভেরিয়েবলগুলি কোনও উপ-শ্রেণীর পাশাপাশি একই প্যাকেজের কোনও ক্লাসের ভেরিয়েবল অ্যাক্সেসের অনুমতি দেয়। এটি অত্যন্ত কার্যকর হতে পারে, বিশেষত কেবলমাত্র পঠনযোগ্য ডেটার জন্য। আমি বিশ্বাস করি না যে সেগুলি অবশ্য প্রয়োজনীয়, কারণ কোনও সুরক্ষিত সদস্য ভেরিয়েবলের কোনও ব্যবহারই কোনও প্রাইভেট সদস্য ভেরিয়েবল এবং দু'জন গেটর এবং সেটটার ব্যবহার করে প্রতিলিপি করা যেতে পারে।


4
বিপরীতে, ব্যক্তিগত সদস্যের ভেরিয়েবলগুলি কখনই প্রয়োজন হয় না; জনসাধারণ যে কোনও ব্যবহারের জন্য যথেষ্ট।
এলিস

3

কেবলমাত্র রেকর্ডের জন্য, "ব্যতিক্রমী সি ++" এর আইটেম 24 এর অধীনে, একটি পাদটীকাতে, সুতার যায় "আপনি কখনই এমন কোনও ক্লাস লিখতে পারবেন না যেখানে পাবলিক বা সুরক্ষিত সদস্যের পরিবর্তনশীল রয়েছে right সঠিক? (কিছু গ্রন্থাগার দ্বারা নির্ধারিত দুর্বল উদাহরণ নির্বিশেষে) ।) "


2

। নেট অ্যাক্সেস মডিফায়ারগুলিতে বিশদ তথ্যের জন্য এখানে যান

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


একটি ভেরিয়েবল অ্যাক্সেস করার জন্য সাবক্লাসগুলি চাইলে তারা এটি নির্দ্বিধায় রূপান্তর করতে সক্ষম হবার চেয়ে আলাদা is সুরক্ষিত ভেরিয়েবলগুলির বিরুদ্ধে এটি অন্যতম প্রধান যুক্তি: এখন আপনার বেস ক্লাসটি তার আক্রমণকারীদের কোনওটিকে ধরে নিতে পারে না, কারণ কোনও উদ্ভূত শ্রেণি সুরক্ষিত সদস্যদের সাথে একেবারে কিছু করতে পারে। এটাই তাদের বিরুদ্ধে মূল যুক্তি। তাদের যদি কেবল ডেটা অ্যাক্সেস করার প্রয়োজন হয় তবে ... একটি অ্যাকসেসর লিখুন। : পি (আমি সুরক্ষিত ভেরিয়েবলগুলি ব্যবহার করি, যদিও আমার চেয়ে বেশি বেশি হওয়া উচিত, এবং আমি কাট ডাউন করার চেষ্টা করব!)
আন্ডারস্কোর_১২
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.