สิ่งที่น่ากลัวที่สุดไม่ได้ทำผิดพลาด แต่ไม่พบพวกเขา จนถึงตอนนี้ฉันรู้ว่ามีบางอย่างผิดปกติกับความเข้าใจของตัวแปรชั้นเรียน
บางทีอาจเป็นเพราะการขาดการใช้ตัวแปรชั้นเรียนบ่อยครั้งและปัญหานี้ยังไม่ได้รับการค้น พบ ฉันได้เรียนรู้เพียงตัวแปรชั้นเรียนเมื่อฉันดู C ++ เมื่อเร็ว ๆ นี้ ?
ฉันเคยคิดว่าความแตกต่างเพียงอย่างเดียวระหว่างตัวแปรคลาสและตัวแปรสมาชิกคือตัวแปรคลาสสามารถเข้าถึงได้โดยตรงผ่านชื่อคลาสและเป็นแบบคงที่ ตัวแปรสมาชิกจะต้องมีการสร้างอินสแตนซ์และเข้าถึงผ่านอินสแตนซ์
ฉันไม่เคยคาดหวังว่าฉันจะเพิกเฉยว่ามีตัวแปรคลาสเดียวในคลาสเดียวและแต่ละอินสแตนซ์ก็เหมือนกัน การปรับเปลี่ยนในอินสแตนซ์หนึ่งจะส่งผลกระทบต่อตัวแปรคลาสในกรณีอื่น ๆ ... (แม้ว่าจะไม่มีข้อผิดพลาดที่เกิดจากสิ่งนี้โดยปกติฉันยังคงต้องชดเชยช่องโหว่ทางปัญญา)
นี่คือ 2 ตัวอย่างที่เขียนใน Java และ Python :
ชั้นเรียนสาธารณะ oo {สตริงคงที่สาธารณะ s; สตริงสาธารณะ M; คงที่ {S = "Ever"; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {oo o1 = new oo (); oo O2 = new oo (); o1.m = "หนึ่งครั้ง"; // ค่า/ที่อยู่ของตัวแปรคลาสในอินสแตนซ์ที่แตกต่างกันคือ System.out.println (O1.s); System.out.println (O2.S); System.out.println (O1.S.HashCode ()); System.out.println (O2.S.HashCode ()); o1.s = "123"; System.out.println (O2.s); // เปลี่ยนตัวแปรคลาสและส่งผลกระทบต่ออินสแตนซ์อื่น ๆ System.out.println (O1.M.HashCode ()); System.out.println (o2.m.hashcode ()); // nullpointerexception // ตัวแปรสมาชิกมีที่อยู่ที่แตกต่างกัน}} #!/bin/pythonclass b: def whoami (ตัวเอง): พิมพ์ ("__ class __:%s, self .__ คลาส __:%s"%(__ คลาส __, self .__ คลาส __)) คลาส C (b): นับ = 0 def __init __ self.num += 1 def print (self): print ("count_id:%s, num_id:%s"%(id (__ class __. นับ), id (self.num))) พิมพ์ ("count:%d, num:%d"%(__ class __. เพิ่มขึ้น 1 ครั้งตัวแปรสมาชิก I2 เพิ่มขึ้น 2 เท่าและตัวแปรคลาสจะเพิ่มขึ้น 3 เท่าในทั้งหมด i1.add () i2.add () i2.add () i1.print () i2.print ()ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ วันหยุดจะสิ้นสุดในวันพรุ่งนี้ ฉันหวังว่าทุกคนจะอุทิศตนให้กับงานของพวกเขาอย่างแข็งขันและให้ความสนใจกับบทความที่บรรณาธิการแบ่งปัน