Mohsen Nikoei
Mohsen Nikoei
خواندن ۲ دقیقه·۵ سال پیش

فلسفه Vibility در OOP

خب احتمالا همه میدونید که توی class سه تا سطح دسترسی به متدا یا فیلدا داریم :

  • private
  • protected
  • public

حتما میدونید که پروپرتی که private باشه یعنی مال خود اون کلاسه هیچکس نمیتونه ارث بری کنه اونو از اون کلاس و یا خارج از کلاس فراخوانیش کنه , protected هم جوریه که میشه ارث بریش کرد ولی خارج از متدای کلاس نمیشه فراخوانیش کرد , public هم که خود اسمش گویاس, هم ارث بری میشه هم همه جا قابل فراخوانیه .


+ بله !

- خب کسی میدونه اینا کاربردشون چیه مثلا private به چه دردی میخوره؟

+ واسه اینکه کسی نتونه ارث بری کنه یا بیرون از کلاس فراخوانیش کنه !

- بعله این سازو کارشه من سوالم اینه که اومده چه مشکلی روحل کنه ؟

+ اینکه کسی نتونه ارث بریش کنه و یا خارج از کلاس ازش استفاده کنه !

-این "کسی" که میگی بلاخره یه دولوپره دیگه که داره رو اون کدا کار میکنه میتونه راحت تغییر بده به public و استفاده کنه .

+خب بخاطر امنیت !

-اگه کسی بتونه با یه راهی از راه دور دست تو کدا ببره وقتی پروژه رو پروداکشن هست(تقریبا غیر ممکنه) دیگه اینا معنی نداره که همه چی قابل تغییر هست.

+ پس برای چیه ؟


اگر تمام پراپرتی هایی که public نیستن به public تغییر داده بشن هیچ مشکلی تو کدا از لحاظ عملکرد پیش نمیاد , visibility فقط برای روشن کردن تکلیف پروپرتی هاست برای دولوپرا که هم کد رو بهتر بفهمن و هم بهتر دولوپ کنن چه توسط خودشون چه دولوپرای دیگه , فرض کن یه کلاس داری با کلی پروپرتی و از این کلاس کلی کلاس دیگه ارث بری میکنن , وقتی به این کد نگاه میکنی و یه سری پروپرتی private میبینی میفهمی که اون پروپرتیا فقط توی اسکوپ این کلاس یعنی توی متدای این کلاس استفاده شدن , نه بیرون از این کلاس و نه توی کلاسایی که ازش ارث بری کردن , پس تا حدودی تکلیف این پروپرتی برای دولوپری که داره کد رو تحلیل میکنه روشن میشه و در نتیجه هم بهتر میفهمه چی به چیه هم یه جورایی یه قراردادیه برای اون کدا که چطور توسعه داده بشن, و یا مثلا یه پروپرتی protected میبینه میفهمه که این ممکنه توی کلاسایی که ارث بری کردن استفاده شده باشه دیگه public هم مشخصه , visibility فقط واسه ی این اومده , بهتر کردن زندگی دولوپرا.


* به private, protected, public ,ء access modifiers هم میگن .


پ.ن:

نکته ای بود کامنت کنین ,امیدوارم مفید واقع شده باشه .

oopaccess modifiersclassobject
شاید از این پست‌ها خوشتان بیاید