Java Access Modifier (Access Controller)
Java ควบคุมสิทธิ์การเข้าถึงและฟังก์ชั่นอื่น ๆ ของคลาสคุณสมบัติและวิธีการผ่านตัวดัดแปลงมักจะวางไว้ที่ส่วนหน้าของคำสั่ง ตัวอย่างเช่น:
คลาสระดับสาธารณะคลาสคลาสชื่อ {// body of class} บูลีนส่วนตัว myflag; คงที่สองสัปดาห์สุดท้าย = 9.5; ได้รับการป้องกันขั้นสุดท้าย int int boxwidth = 42; public s tatic void main (String [] อาร์กิวเมนต์) {// body of method}มีตัวดัดแปลงมากมายใน Java แบ่งออกเป็นตัวดัดแปลงการเข้าถึงและตัวดัดแปลงที่ไม่สามารถเข้าถึงได้ ส่วนนี้จะแนะนำตัวดัดแปลงการเข้าถึงเท่านั้นและตัวดัดแปลงที่ไม่ใช่การเข้าถึงจะได้รับการแนะนำในภายหลัง
Access Modifiers หรือที่เรียกว่าอักขระควบคุมการเข้าถึงอ้างถึงคำหลักที่สามารถควบคุมสิทธิ์การใช้งานของคลาสตัวแปรสมาชิกและวิธีการ
ตัวควบคุมการเข้าถึงเป็นแนวคิดที่สำคัญในการเขียนโปรแกรมเชิงวัตถุและสามารถใช้เพื่อป้องกันการเข้าถึงคลาสตัวแปรวิธีการและตัวสร้าง
Java รองรับสิทธิ์การเข้าถึงที่แตกต่างกันสี่แบบ:
สาธารณะ: สาธารณะ
คลาสวิธีการสร้างและอินเทอร์เฟซที่ประกาศว่าเป็นสาธารณะสามารถเข้าถึงได้โดยคลาสอื่น ๆ
หากชั้นเรียนสาธารณะหลายแห่งที่เข้าถึงกันนั้นมีการแจกจ่ายในแพ็คเกจที่ไม่ได้ใช้คุณจะต้องนำเข้าแพ็คเกจที่ชั้นเรียนสาธารณะที่สอดคล้องกันอยู่ เนื่องจากการสืบทอดของชั้นเรียนวิธีการสาธารณะและตัวแปรทั้งหมดของคลาสสามารถสืบทอดได้โดยคลาสย่อย
วิธีการต่อไปนี้ใช้การควบคุมการเข้าถึงสาธารณะ:
โมฆะคงที่สาธารณะหลัก (String [] อาร์กิวเมนต์) {// body of method} วิธีการหลัก () ของโปรแกรม Java จะต้องตั้งค่าเป็นสาธารณะมิฉะนั้นล่าม Java จะไม่สามารถเรียกใช้คลาสได้
ได้รับการคุ้มครอง: ได้รับการปกป้อง
ตัวแปรวิธีการและตัวสร้างที่ประกาศว่าสามารถเข้าถึงได้โดยคลาสอื่น ๆ ในแพ็คเกจเดียวกันหรือโดยคลาสย่อยในแพ็คเกจที่แตกต่างกัน
ตัวดัดแปลงการเข้าถึงที่ได้รับการป้องกันไม่สามารถแก้ไขคลาสและอินเทอร์เฟซได้
คลาสย่อยสามารถเข้าถึงวิธีการและตัวแปรที่ประกาศโดยตัวดัดแปลงที่ได้รับการป้องกันเพื่อให้สามารถปกป้องคลาสที่ไม่เกี่ยวข้องจากการใช้วิธีการและตัวแปรเหล่านี้
คลาสพาเรนต์ต่อไปนี้ใช้ตัวดัดแปลงการเข้าถึงที่ได้รับการป้องกันและเมธอด subclass overloads bark () ของคลาสพาเรนต์
Public Class Dog {Protected Void Bark () {System.out.println ("ว้าวไม่ได้มา"); ฉันกลัวมากอย่าติดตามฉัน ");}} หากวิธี BARK () ถูกประกาศว่าเป็นส่วนตัวชั้นเรียนอื่นที่ไม่ใช่สุนัขจะไม่สามารถเข้าถึงวิธีการได้ หาก BARK () ถูกประกาศสาธารณะแล้วคลาสทั้งหมดสามารถเข้าถึงวิธีการ หากเราต้องการให้วิธีการที่จะมองเห็นได้เฉพาะคลาสย่อยของคลาสที่อยู่ในนั้นประกาศวิธีการที่ได้รับการปกป้อง
ส่วนตัว: ส่วนตัว
ตัวดัดแปลงการเข้าถึงส่วนตัวเป็นระดับการเข้าถึงที่เข้มงวดที่สุดดังนั้นวิธีการตัวแปรและตัวสร้างที่ประกาศว่าเป็นส่วนตัวสามารถเข้าถึงได้โดยชั้นเรียนที่พวกเขาอยู่และคลาสและอินเทอร์เฟซไม่สามารถประกาศเป็นส่วนตัวได้
ตัวแปรที่ประกาศว่าเป็นประเภทการเข้าถึงส่วนตัวสามารถเข้าถึงได้โดยคลาสภายนอกผ่านวิธี getter/setter สาธารณะในชั้นเรียน
การใช้ตัวดัดแปลงการเข้าถึงส่วนตัวส่วนใหญ่จะใช้เพื่อซ่อนรายละเอียดการใช้งานของชั้นเรียนและปกป้องข้อมูลของชั้นเรียน
คลาสต่อไปนี้ใช้ตัวดัดแปลงการเข้าถึงส่วนตัว:
Public Class Dog {ชื่อสตริงส่วนตัว; (อายุ int) {this.age = age;}}ในตัวอย่างตัวแปรชื่อและอายุในคลาสสุนัขเป็นตัวแปรส่วนตัวดังนั้นคลาสอื่น ๆ จึงไม่สามารถรับและตั้งค่าของตัวแปรได้โดยตรง ในการเปิดใช้งานคลาสอื่น ๆ เพื่อจัดการกับตัวแปรวิธีการสาธารณะสองคู่คือ getName ()/setName () และ getage ()/setage () ถูกกำหนดไว้ซึ่งใช้เพื่อรับและตั้งค่าตัวแปรส่วนตัว
นี่คือคำหลักใน Java
การกำหนดวิธีการสำหรับการเข้าถึงตัวแปรส่วนตัวในชั้นเรียนเป็นเรื่องปกติที่จะตั้งชื่อเช่นนี้: คำนำหน้า "รับ" หรือ "ตั้งค่า" ในชื่อตัวแปรและใช้ตัวอักษรเริ่มต้นของตัวแปร ตัวอย่างเช่นวิธีการรับชื่อตัวแปรส่วนตัวคือ getName () และวิธีการตั้งชื่อคือ setName () วิธีการเหล่านี้มักจะใช้และมีชื่อเฉพาะที่เรียกว่าวิธีการ getter และ setter
ค่าเริ่มต้น: ไม่มีการใช้คำหลัก
ไม่มีตัวดัดแปลงประกาศคุณสมบัติและวิธีการที่สามารถมองเห็นได้สำหรับคลาสภายในแพ็คเกจเดียวกัน ตัวแปรทั้งหมดในอินเทอร์เฟซได้รับการประกาศโดยปริยายว่าเป็นแบบคงที่สาธารณะสุดท้ายในขณะที่วิธีการในอินเทอร์เฟซเป็นสาธารณะโดยค่าเริ่มต้น
ดังที่แสดงในตัวอย่างต่อไปนี้คำจำกัดความของคลาสตัวแปรและวิธีการไม่ได้ใช้ตัวดัดแปลงใด ๆ :
คลาสสุนัข {ชื่อสตริง; อาจารย์ฉันหิว ");}}การควบคุมการเข้าถึงและการสืบทอด
โปรดทราบกฎต่อไปนี้สำหรับการสืบทอด (ผู้อ่านที่ไม่เข้าใจแนวคิดของการสืบทอดสามารถข้ามได้ที่นี่หรือคลิกที่มรดก Java และ polymorphic Preview):
วิธีการที่ประกาศว่าเป็นสาธารณะในชั้นเรียนหลักจะต้องเป็นสาธารณะในชั้นเรียนเด็ก
วิธีการที่ประกาศว่าได้รับการคุ้มครองในชั้นเรียนหลักได้รับการประกาศว่าเป็นความคุ้มครองหรือสาธารณะในชั้นเด็ก ไม่สามารถประกาศว่าเป็นส่วนตัว
วิธีการที่ประกาศโดยตัวดัดแปลงเริ่มต้นในคลาสหลักสามารถประกาศเป็นส่วนตัวในคลาสย่อย
วิธีการที่ประกาศว่าเป็นส่วนตัวในชั้นเรียนหลักไม่สามารถสืบทอดได้
วิธีใช้อักขระควบคุมการเข้าถึง
อักขระควบคุมการเข้าถึงช่วยให้เราสามารถควบคุมสิทธิ์ของรหัสได้อย่างง่ายดาย:
เมื่อคุณต้องการทำให้ชั้นเรียนคุณเขียนการเข้าถึงคลาสอื่น ๆ ทั้งหมดคุณสามารถประกาศการควบคุมการเข้าถึงของชั้นเรียนเป็นสาธารณะ
เมื่อคุณต้องการทำให้ชั้นเรียนของคุณสามารถเข้าถึงได้โดยคลาสในแพ็คเกจของคุณเองสามารถละเว้นอักขระควบคุมการเข้าถึงได้
เมื่อมีความจำเป็นต้องควบคุมข้อมูลสมาชิกในชั้นเรียนอักขระควบคุมการเข้าถึงข้อมูลสมาชิกในคลาสนี้สามารถตั้งค่าเป็นสาธารณะได้รับการคุ้มครองหรือละเว้น
ขอบเขตของตัวแปร Java <br /> ใน Java ขอบเขตของตัวแปรแบ่งออกเป็นสี่ระดับ: ระดับคลาสระดับอินสแตนซ์ของวัตถุระดับวิธีและระดับบล็อก
ตัวแปรระดับระดับเรียกว่าตัวแปรทั่วโลกหรือตัวแปรคงที่ ตัวแปรระดับระดับมีอยู่แล้วหลังจากนิยามคลาสแล้วการครอบครองพื้นที่หน่วยความจำสามารถเข้าถึงได้ผ่านชื่อคลาสและไม่จำเป็นต้องมีการสร้างอินสแตนซ์
ตัวแปรระดับอินสแตนซ์ของวัตถุเป็นตัวแปรสมาชิกเท่านั้น
ตัวแปรระดับเมธอดเป็นตัวแปรที่กำหนดไว้ในวิธีการซึ่งเป็นตัวแปรท้องถิ่น
ตัวแปรระดับบล็อกเป็นตัวแปรที่กำหนดไว้ในบล็อก บล็อกอ้างถึงรหัสที่ล้อมรอบด้วยวงเล็บปีกกาตัวอย่างเช่น:
{int อายุ = 3; ข้อผิดพลาดอายุและตัวแปรชื่อ System.out.println (ชื่อ + "แล้ว" + อายุ + "ปี"); ภาพประกอบ:
นอกเหนือจากการเข้าถึงตัวแปรระดับเมธอดแล้ววิธีการยังสามารถเข้าถึงตัวแปรระดับชั้นเรียนและระดับอินสแตนซ์
สามารถเข้าถึงตัวแปรระดับระดับและระดับอินสแตนซ์ภายในบล็อกได้
วิธีการและตัวแปรระดับบล็อกจะต้องแสดงการเริ่มต้นมิฉะนั้นจะไม่สามารถเข้าถึงได้
รหัสสาธิต:
การสาธิตคลาสสาธารณะ {สตริงคงที่สาธารณะ = "Weixueyuan"; test1 () {int j = 3; สามารถเข้าถึง System.out.println ("name =" + name + ", i =" + i + ", j =" + j);} โมฆะคงที่สาธารณะ (สตริง [] args) {// ไม่มีการสร้าง วัตถุ, เข้าถึงตัวแปรระดับคลาส System.out.println (demo.name); // สร้างวัตถุและเข้าถึงวิธีการสาธิต t = demo ใหม่ (); t.test1 ();}} ผลการทำงาน:
Micro Academy Name = Micro Academy, i = 0, J = 3