สองคีย์เวิร์ดนี้ public, private เขาไว้สำหรับกำหนดขอบเขตการเข้าถึงฟังก์ชั่นหรือตัวแปรภายในออบเจ็ก ดอตอยอ

ตอนพระเจ้าสร้างออบเจ็กขึ้นมา พระเจ้าจะกำหนดไว้แล้วว่า ฟังก์ชั่นไหนไม่ให้เรียกจากภายนอก ฟังก์ชั่นไหนให้เรียกจากภายนอกได้และเรียกจากภายในก็ได้ เหตุผลที่ทำอย่างนี้น่ะเหรอ ก็เพื่อจำกัดกรอบของบักให้แคบลง หรือไม่งั้นก็อาจจะเพราะอินดี้ก็ได้ เอ้า… ทำไมอะเราไม่ให้เรียกใช้ฟังก์ชั่นนี้จากภายนอกอะ เราผิดเหรอ

ผมเคยเจอบ่อย ตอนที่เขียนปลักอินติดต่อกับวูคอมเมิร์ส เรียกฟังก์ชั่นไป ตอบกลับเออเร่อมาว่าฟังก์ชั่นนี้ไม่ให้เรียกจากภายนอก เป็น private อะไรอะ… ลองเข้าไปอ่านโค้ดของวูคอมเมิร์สดูก็ไม่น่าจะต้องจำกัดสิทธิ์การเข้าถึง ผมถึงบอกว่าบางทีก็เพราะพระเจ้าอินดี้

ก็แล้วแต่แหละ เขียนๆไปมีประสบการณ์เยอะๆ จะรู้เองว่า อ๋อฟังก์ชั่นนี้เราใช้ส่วนตัวภายในก็พอ

เอาล่ะมาดูการเรียกใช้งานจากคลาสข้างบน

เราจะได้ตัวแปร name เท่ากับ Watcharamet Srinethirothai

แต่ถ้าเราเรียกอย่างนี้ เออเร่อเลยนะครับ

มันจะเออเร่อตรงบรรทัด 29 เพราะว่าในคลาสประกาศฟังก์ชั้น changeName() ไว้เป็น private ไม่สามารถเรียกใช้งานแบบนี้ได้ มันใช้ได้เฉพาะภายในคลาสเท่านั้น ดูเอาตรงบรรทัด 23 นั่น เรียกภายในไม่เป็นไรไม่เออเร่อ

ครับสรุปตบท้าย public นั้นเรียกได้ทั้งจากภายนอกและภายใน ส่วน private นั้นเรียกได้แต่จากภายใน เหตุผลก็เพื่อความปลอดภัยหรือเพราะความอินดี้ เขียนไปเรื่อยๆประสบการณ์จะบอกเอง

ครั้นผมจะบอกเอง ผมก็ใช้เหตุผลอินดี้ซะส่วนใหญ่