මම පංතියක් උප පංතියේ කරන විට කරන පළමු දෙය නම් පුද්ගලික ක්රම රාශියක් ආරක්ෂාව සඳහා වෙනස් කිරීමයි
private
එදිරිව protected
ක්රම පිළිබඳ සමහර තර්ක :
private
ක්රම නැවත භාවිතා කිරීම වළක්වයි. උප පංතියකට පුද්ගලික ක්රමයේදී කේතය භාවිතා කළ නොහැකි අතර එය නැවත ක්රියාත්මක කිරීමට සිදුවිය හැකිය - නැතහොත් පුද්ගලික ක්රමය මත මුලින් රඳා පවතින ක්රමය (ය) නැවත ක්රියාත්මක කරන්න.
අනෙක් අතට, වන ඕනෑම ක්රමයක් නොවන private
අර්ථයෙන්, "බාහිර ලෝකයට" කිරීමට පන්තිය විසින් සපයන ලද API ලෙස දැකිය හැක තෙවන පාර්ශවීය උප වර්ගිකරණයන් වෙන කෙනෙක් ඔහුගේ පිළිතුර යෝජනා ලෙස, ඉතා "පිටත ලෝකය" ලෙස සලකනු ලබයි දැනටමත්.
ඒක නරක දෙයක්ද? - මම හිතන්නේ නැහැ.
ඇත්ත වශයෙන්ම, (ව්යාජ) පොදු API එකක් මුල් ක්රමලේඛකය අගුළු දමා එම අතුරුමුහුණත් නැවත ප්රතිස්ථාපනය කිරීමට බාධා කරයි. නමුත් අනෙක් පැත්තෙන් බැලූ විට, ක්රමලේඛකයෙකු තමාගේ පොදු ක්රියාත්මක කිරීමේ තොරතුරු තරම් පිරිසිදු හා ස්ථාවර ආකාරයකින් තමාගේම “ක්රියාත්මක කිරීමේ තොරතුරු” නිර්මාණය නොකළ යුත්තේ ඇයි? private
ඔහුගේ "පුද්ගලික" කේතය සැකසීම ගැන ඔහුට කම්මැලි විය හැකි වන පරිදි ඔහු භාවිතා කළ යුතුද ? කිසිවෙකු නොදකින නිසා ඔහුට පසුව එය පිරිසිදු කළ හැකි යැයි සිතනවාද? - නොමැත.
ක්රමලේඛකයා තම “පුද්ගලික” කේතය ගැන මඳක් සිතා බැලිය යුතු අතර, එය හැකි තාක් දුරට නැවත භාවිතා කිරීමට ඉඩ සලසන හෝ ප්රවර්ධනය කරන අයුරින් එය සැකසීමට. එවිට පුද්ගලික නොවන කොටස් අනාගතයේ දී යම් බියක් තරම් බරක් නොවනු ඇත.
මා දකින බොහෝ (රාමු) කේතයන් නොගැලපෙන ලෙස භාවිතා කරයි private
: protected
, පුද්ගලික ක්රමයකට පැවරීමට වඩා වැඩි යමක් කරන අවසාන නොවන ක්රම බහුලව දක්නට ලැබේ. protected
, පුද්ගලික ක්ෂේත්රයන්ට සෘජුවම ප්රවේශ වීමෙන් පමණක් කොන්ත්රාත්තුව ඉටු කළ හැකි අවසාන නොවන ක්රම.
මෙම ක්රමෝපායන් තර්කානුකූලව අභිබවා / වැඩි දියුණු කළ නොහැක, තාක්ෂණිකව එය (සම්පාදක) පැහැදිලි කිරීමට කිසිවක් නැත.
විස්තීරණතාව සහ උරුමය අවශ්යද? ඔබේ ක්රම සකස් නොකරන්න private
.
ඔබේ පන්තියේ යම් හැසිරීමක් වෙනස් කිරීමට අවශ්ය නැද්ද? ඔබේ ක්රම සාදන්න final
.
ඔබේ ක්රමය නිශ්චිත, මනාව නිර්වචනය කළ සන්දර්භයකට පිටින් කැඳවිය නොහැකිද? ඔබේ ක්රමවේදය සකසන්න private
සහ / හෝ වෙනත් protected
එතීමේ ක්රමයක් හරහා නැවත භාවිතා කිරීම සඳහා අවශ්ය මනාව නිර්වචනය කළ සන්දර්භය ඔබට ලබා ගත හැකි ආකාරය ගැන සිතා බලන්න .
ඒ නිසා මම private
අරපිරිමැස්මෙන් භාවිතා කරන්නැයි යෝජනා කරමි . හා පටලවා නොගත කිරීමට private
සමග final
. - ක්රමවේදයක් ක්රියාත්මක කිරීම පන්තියේ සාමාන්ය කොන්ත්රාත්තුවට අත්යවශ්ය වන අතර එය ප්රතිස්ථාපනය / ඉක්මවා නොයැවිය යුතු නම්, එය සාදන්න final
!
ක්ෂේත්ර සඳහා, private
ඇත්තෙන්ම නරක නැත. ක්ෂේත්රයේ (ව) ලෙස දීර්ඝ ලෙස සාධාරණ (බව, සුදුසු ක්රම මගින් "භාවිතා" කළ හැකි නොවේ getXX()
හෝ setXX()
!).