الغرض من الـ visibility بأنواعها public protected private
ليس تقليل أو زيادة عدد الأكواد
كل واحدة لها استخدامتها الخاصة بها
فمثلاً : public
تمكنك من استدعاء الدالة من داخل أو خارج الكلاس و توريثها في أي كلاس تريده. إذاً هي تتمتع بحرية مطلقة. و هي الأكثر استخداماً لأنها عند تجع متغيرتك متاحة لك لإرسالها لكلاسات أخرة. و لكن لا يعني ذلك أننا نعتمد عليها في كل public لأننا في بعض الأحيان لا نريد لبعض الدوال أو المتغيرات أن تكون متيسرة في كلاس آخر بعينه، خوفاً من التعارض في الأكواد. و هذا الشيء لا يلاحظة المبرمج المبتدئ أو المبرمج المتطور. و لكن سيلاحظه المبرمج المحترف. لذلك سيقوم باستخدام ميزة أكثر أمناً له في مشروعه البرمجي.
protected : بما أن public ستشكل لنا بعض التعارض عند تشعب الأكواد البرمجية فإننا سوف نلجأ إلى خيار يوفر لنا خاصية (الحصر الكودي) أي يقوم بحصر بعض الدوال و المتغيرات ليكون داخل كلاس بعينه مع وجود خصية توريثه في حالة الحوجة له. protected تفعل ذلك بالإضافة لأهم خاصية لها و هي أنه لا يمكن استدعائها خارج الكلاس أي معاكسة لـ public و لكنها تشترك مع public في التوريث. و يختلفان في الاستدعاء الخارجي. بكدا نكون آمنين من بعض الدوال و الخصائص التي ربما تشكل لنا العوائق في حالة كانت حرة.
private : الأكثر أمناً و الأقل استخداماً. يتم صياغتها برمجياً داخل الكلاس. و نستخدمها داخل الكلاس. و محرم عليها الاستخدام خارج الكلاس و محرم عليها أيضاً التوريث. إذا نستخدمها لأغراض معينه. و ينتهي مفعولها بنهاية الكلاس.
static : نفس استخدام public يتم استخدامها داخل و خارج الكلاس مع وجود خاصية التوريث. و لكن تختلف صياغتها و غالباً تستخدم (self) و (:

داخل الكلاس و (اسم الكلاس) مع (:

خارجه. الفرق الوحيد بينها و بين public أنها تشكل حدث ثابت. يعني نتيجة الدالة تكون ثابته و غير غابلة للتغير. لذلك يتم تكويد الآيدي بالنسبة للأعضاء عن طريق static لضمان الحس الأمني بعدم التكرار. بعض الدوال تأخذ قيمة و لكنها عرضة للتغير في قيمها. نحافظ عليها بـ static