บทความนี้ส่วนใหญ่ศึกษาเนื้อหาที่เกี่ยวข้องกับการควบคุมสิทธิ์การเข้าถึงการเขียนโปรแกรม Java ดังต่อไปนี้
สำหรับตัวดัดแปลงที่ฉันไม่ได้ใส่ใจมาก่อนโดยทั่วไปตัวแปรไม่เคยถูกเพิ่มมาก่อนหนึ่งคนเป็นเพราะฉันไม่รู้ว่ามันมีไว้เพื่ออะไรและอื่น ๆ เป็นเพราะฉันขี้เกียจ เมื่อฉันพบโครงการในภายหลังฉันพบว่ายังมีความแตกต่างอย่างมากระหว่างส่วนตัวและสาธารณะ
(1) ก่อนอื่นชื่อแพ็คเกจ
เมื่อใช้คลาสเช่นคลาสคอลเลกชันคุณต้องแนะนำแพ็คเกจนี้แล้วใช้คลาสด้านล่างแพ็คเกจ ชอบ:
แพ็คเกจ com.myown.iaiti; การพิมพ์คลาสสาธารณะ {void print (String s) {system.out.println (s); -แพ็คเกจที่กำหนดเองโดยการแนะนำแพ็คเกจของคุณเองคุณสามารถใช้วิธีที่คุณเขียนเพื่อพิมพ์สตริงในอนาคต ฉันพยายามตั้งค่าเส้นทางของแพ็คเกจของฉันเองเป็น classpath มาก่อนดังนั้นเมื่อรวบรวมในไดเรกทอรีอื่น ๆ คุณไม่จำเป็นต้องใส่แพ็คเกจลงในไดเรกทอรีนี้และมันก็สามารถทำงานได้ตามปกติมิฉะนั้นจะไม่พบแพ็คเกจ JAR
(2) สาธารณะ
สาธารณะในอดีตครูมักใช้ Lao Tzu เป็นคำอุปมา นี่คือสิ่งที่สาธารณะฉันจะใช้มันให้คุณ สาธารณะติดตามสมาชิกข้อมูลอย่างใกล้ชิดซึ่งหมายความว่าทุกคนมีให้บริการ
(3) ส่วนตัว
ส่วนตัวส่วนตัวอสังหาริมทรัพย์ส่วนตัวของฉันอย่าแตะต้อง ยกเว้นคลาสที่มีสมาชิกข้อมูลนี้ในแพ็คเกจที่สามารถใช้งานได้ไม่สามารถใช้คลาสอื่น ๆ ได้ ส่วนนี้เป็นสิ่งที่นักออกแบบไม่ต้องการแสดงหรือแก้ไขสำหรับบุคคลภายนอก
การพิมพ์คลาสสาธารณะ {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {getit g = new getIt (); }} คลาส getIt {// โปรดทราบว่าไฟล์สามารถมีคลาสสาธารณะเดียวเท่านั้น หากคุณต้องการเพิ่มสาธารณะต่อหน้า // อย่าเขียนในไฟล์เดียวกับ Print Private GetIt () {}}ตัวสร้าง GetIt () ไม่สามารถมองเห็นได้ไม่สามารถมองเห็นได้จะเห็นได้ว่ามันมีประโยชน์ รูปแบบ Singleton ยังใช้ด้วยวิธีนี้ควบคุมการสร้างวัตถุ
แอปพลิเคชันของโหมดซิงเกิลตัน:
คลาส A {ส่วนตัว A () {} ส่วนตัวคงที่ a = new a (); สาธารณะคงที่ getinstace () {return a; -คลาสอื่น ๆ ไม่สามารถสร้างวัตถุผ่านใหม่ได้เนื่องจากตัวสร้างถูกแก้ไขโดยส่วนตัว จุดประสงค์คือเมื่อคลาส A นี้ซับซ้อนมากและใช้หน่วยความจำฉันต้องควบคุมการสร้างวัตถุอย่างเคร่งครัด เนื่องจากเราได้รับคดีเดียวเราจะพูดคุยเกี่ยวกับคดีเดียวโดยวิธี ฉันเคยอ่านงานเขียนของผู้คนมาก่อนมันคลาสสิกและน่าทึ่งมาก
ข้างต้นเป็นสไตล์ชายผู้หิวโหยซึ่งก็คือการช่วยให้คุณได้รับสิ่งใหม่ทันทีที่คุณมาและใช้โดยตรงเมื่อคุณได้รับใหม่ในอนาคต ไม่มีปัญหาการทำเกลียว ข้อเสียคือถ้ามันไร้ประโยชน์มันจะเป็นการเสียทรัพยากร
สไตล์ขี้เกียจ
คลาสสาธารณะ A {ส่วนตัว A () {} ส่วนตัวคงที่ A A; สาธารณะคงที่ a getInstance () {ถ้า (a == null) {return a = new a (); } else {return a; -มันจะช่วยให้คุณใหม่เมื่อคุณใช้งานและมันจะใหม่เมื่อคุณใช้ แต่มีปัญหาการทำเกลียว หากคุณเพิ่มการซิงโครไนซ์ประสิทธิภาพจะลดลงเพราะถ้าคุณใช้มันหนึ่งในนั้นจะถูกครอบครอง
วิธีที่สมบูรณ์แบบคือการรวมทั้งสองอย่าง:
คลาสสาธารณะ A {// ชั้นในแบบคงที่ส่วนตัวคลาสจะถูกโหลดเฉพาะเมื่อมีการอ้างอิงคลาสคงที่คลาสสแตติก Lazya {สาธารณะคงที่ AA = ใหม่ A (); } สาธารณะคงที่ a getInstance () {return lazya.a; -ฉันไม่เข้าใจคลาสภายในที่เรียกว่านี้มาก่อน ฟังก์ชั่นคือเพื่อให้เกิดการโหลดล่าช้าเพราะจะใช้เฉพาะเมื่อใหม่ ใช้วิธี getInstance ไม่มีปัญหามัลติเธรดเนื่องจากคลาสคงที่เป็นของวัตถุคลาสภายนอกทั้งหมดและจะถูกโหลดเพียงครั้งเดียว หลังจากคลาสภายในแบบคงที่ถูกสร้างอินสแตนซ์มันเป็นแอตทริบิวต์ระดับคลาสซึ่งไม่ได้เป็นของวัตถุบางอย่าง แต่จะโหลดเพียงครั้งเดียว ด้วยวิธีนี้จะไม่มีการสูญเสียทรัพยากรและไม่มีปัญหาเรื่องความไร้ประสิทธิภาพของการทำมัลติเธรด คนที่คิดวิธีนี้น่าทึ่งจริงๆ
(4) ได้รับการปกป้อง
การพิมพ์เป็นหมวดหมู่พื้นฐาน คนจีนชอบพูดคุยเกี่ยวกับหมวดหมู่ผู้ปกครอง แต่ชาวต่างชาติคิดว่าหมวดหมู่ย่อยนั้นยอดเยี่ยมกว่า หมวดหมู่พื้นฐานเป็นรากฐานหรือรากฐาน ได้รับการคุ้มครองเป็นคุณสมบัติที่ฉันทิ้งไว้กับลูกชายของฉันโดยเฉพาะ
การพิมพ์ระดับสาธารณะ {protected void print () {} โมฆะส่วนตัวไม่สามารถพิมพ์ () {}} คลาสสาธารณะ printson ขยายการพิมพ์ {void get () {print (); // ไม่สามารถพิมพ์ได้ (); วิธีส่วนตัวส่วนตัวไม่สามารถใช้ subclasses}} คลาสสาธารณะ Notson {void get () {print (); -คลาสย่อยที่ได้รับการแก้ไขสามารถรับได้ระหว่างภาครัฐและเอกชน
(5) สิทธิ์การเข้าถึงสำหรับชั้นเรียน
แต่ละไฟล์สามารถมีชั้นเรียนสาธารณะเดียวเท่านั้น
ชื่อคลาสและชื่อไฟล์เหมือนกัน
หากคุณไม่มีรากฐานพื้นฐานมันจะเป็นไปก่อนเวลาเล็กน้อย แต่หลังจากจุดความรู้ดีขึ้นมันจะเข้าใจง่าย การควบคุมสิทธิ์การเข้าถึงยังคงขึ้นอยู่กับว่าคุณต้องการใช้ส่วนหนึ่งของรหัสของคุณโดยตรงสำหรับผู้อื่นหรือไม่
สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของรหัสควบคุมสำหรับการอนุญาตการเข้าถึงโปรแกรม Java ในบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!