ตัวแปรท้องถิ่น
"สวัสดี นักเรียนที่รัก ถึงเวลาที่ต้องจริงจังกับตัวแปรมากขึ้น แต่คราวนี้เราจะไม่พูดถึงโครงสร้างภายใน แต่เราจะเน้นไปที่วิธีที่ตัวแปรโต้ตอบกับรหัสที่พวกมันอยู่
"ตัวแปรทั้งหมดที่ถูกประกาศภายในเมธอดเรียกว่าตัวแปรโลคัลตัวแปรโลคัลมีอยู่เฉพาะในบล็อกของโค้ดที่มีการประกาศหรือถ้าจะให้แม่นยำยิ่งขึ้น ตัวแปรนั้นมีอยู่ตั้งแต่วินาทีที่ประกาศจนกระทั่งสิ้นสุดบล็อก ของรหัสที่มีการประกาศ"
"เห็นได้ชัดว่าฉันต้องการตัวอย่าง"
"ไม่มีปัญหา นี่เลย:
รหัส | ความพร้อมใช้งานของตัวแปร |
---|---|
|
|
"มาดูกฎสำหรับการเข้าถึงตัวแปรในเครื่องกันอีกครั้ง นี่คือบล็อกของโค้ด อะไรคือจุดเริ่มต้นและจุดสิ้นสุดของมัน"
"วงเล็บปีกกา?"
"ถูกต้อง นี่อาจเป็นตัวเมธอด ตัวของลูป หรือแค่กลุ่มของโค้ดสำหรับคำสั่งเงื่อนไข ตัวแปรที่ประกาศในกลุ่มของโค้ดมีอยู่จนถึงจุดสิ้นสุดของบล็อกของโค้ดนั้น บอกฉันทีว่าจะ มีตัวแปรอยู่หากมีการประกาศในเนื้อหาของลูปหรือไม่"
"มันจะมีอยู่ในเนื้อความของลูปเท่านั้น"
"ถูกต้อง ยิ่งไปกว่านั้น มันจะถูกสร้างและทำลายในการวนซ้ำแต่ละครั้ง"
"นั่นหมายความว่าคุณไม่สามารถประกาศตัวแปรโลคัลสองตัวที่มีชื่อเดียวกันในเมธอดเดียวได้ — โปรแกรมจะไม่คอมไพล์ แต่คุณสามารถทำได้หากบล็อกของโค้ดที่มีการประกาศตัวแปรไม่ซ้อนทับกัน "
"มีเหตุผลว่าทำไมคุณถึงเป็นคนโปรดของฉัน Amigo ลองดูอีกหนึ่งตัวอย่างเพื่อทำให้สมองของคุณแข็งขึ้น
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
"เราสามารถประกาศชื่อตัวแปรโลคัลตัวที่สองb
ได้ เนื่องจากb
ตัวแปรตัวแรกไม่สามารถมองเห็นได้ในบล็อคโค้ดที่มีb
การประกาศตัวแปรตัว ที่สอง
พารามิเตอร์
"อย่างที่เราพูดไปก่อนหน้านี้ แต่ละเมธอดสามารถมีตัวแปรที่เราเรียกว่าพารามิเตอร์ แล้วการมองเห็นและอายุการใช้งานของพวกมันล่ะ?"
"อืม... ฉันอึ้งไปเลย..."
"ทุกอย่างค่อนข้างง่ายที่นี่ พารามิเตอร์ถูกสร้างขึ้นเมื่อขั้นตอนการดำเนินการในเมธอด (เช่น เมื่อโค้ดของเมธอดเริ่มดำเนินการ) พารามิเตอร์จะถูกตัดออกเมื่อเมธอดสิ้นสุดลง"
"กล่าวอีกนัยหนึ่งคือมองเห็นได้ในเนื้อหาทั้งหมดของวิธีการและมีเพียงที่นั่นเท่านั้น"
"ใช่ ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
"อย่างที่เราพูดไปก่อนหน้านี้args
เป็นเพียงตัวแปรที่มีประเภทเป็นอาร์เรย์ของสตริง และเช่นเดียวกับพารามิเตอร์ทั้งหมด ตัวแปรนี้มีอยู่ทุกที่ภายในเนื้อหาของเมธอด อย่างไรก็ตาม เรามักจะไม่สนใจมันในตัวอย่างของเรา
ตัวแปรในคลาส
"จำบทเรียนในระดับ 1 ที่เรากล่าวว่าคลาสสามารถมีเมธอดและตัวแปรได้ บางครั้งเมธอดจะเรียกว่าอินสแตนซ์เมธอด และตัวแปร - ตัวแปรอินสแตนซ์หรือฟิลด์
"ตัวแปร (หรือฟิลด์) ของคลาส คือ อะไร
เป็นตัวแปรที่ไม่ได้ประกาศในเมธอด แต่อยู่ในคลาส"
"และพวกเขาอยู่ที่นั่นเพื่ออะไร"
"สำหรับผู้เริ่มต้น พวกมันสามารถเข้าถึงได้จากเมธอดใดๆ (ไม่คงที่) ของคลาส โดยคร่าวๆตัวแปรอินสแตนซ์คือตัวแปรที่ใช้ร่วมกันโดยเมธอดทั้งหมดของคลาส
ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
"ในตัวอย่างนี้ เรามีสองวิธี — add()
และremove()
วิธีadd()
การเพิ่มตัวแปรsum
และcount
อินสแตนซ์ และremove()
วิธีการลดsum
ตัวแปรcount
และ ทั้งสองวิธีทำงานกับตัวแปรอินสแตนซ์ที่ใช้ร่วมกัน"
"ฉันเข้าใจทั้งหมดแล้ว! ตัวแปรโลคัลมีอยู่ในขณะที่เมธอดกำลังดำเนินการ ตัวแปรอินสแตนซ์ของคลาสมีอยู่ภายในวัตถุของคลาสตราบใดที่วัตถุนั้นมีอยู่"
"ทำได้ดีมาก Amigo เราได้วางรากฐานบางอย่างแล้ว และคุณจะได้เรียนรู้รายละเอียดเกี่ยวกับวัตถุของชั้นเรียนในระดับต่อไป
ตัวแปรคงที่
"เช่นเดียวกับเมธอด ตัวแปรในคลาสอาจเป็นแบบคงที่หรือไม่คงที่เมธอดแบบคงที่สามารถเข้าถึงเฉพาะตัวแปรแบบคงที่เท่านั้น
"ฉันยังไม่มีความเข้าใจที่ชัดเจนเกี่ยวกับตัวแปรคงที่"
"โอ้ ฉันรู้ แต่ไม่ต้องกังวล สำหรับตอนนี้ ทำความคุ้นเคยกับพวกเขา ทำความคุ้นเคยกับพวกเขา ในระดับ 11 เราจะวิเคราะห์โครงสร้างของตัวแปรคงที่และวิธีการ และคุณจะเข้าใจเหตุผลของสิ่งเหล่านี้ ข้อ จำกัด.
"ในการสร้างตัวแปรสแตติก (ตัวแปรคลาส) คุณต้องเขียนstatic
คำสำคัญในการประกาศ
"ตัวแปรสแตติกไม่ได้ผูกมัดกับออบเจกต์หรืออินสแตนซ์ของคลาสที่ประกาศไว้ แต่เป็นของคลาสเอง นั่นเป็นเหตุผลว่าทำไมจึงมีอยู่แม้ว่าจะไม่มีการสร้างอ็อบเจกต์เดียวของคลาสก็ตาม คุณสามารถอ้างอิงถึง จากคลาสอื่นโดยใช้โครงสร้างเช่น:
ClassName.variableName
ตัวอย่าง:
รหัส | การมองเห็นที่เปลี่ยนแปลงได้ |
---|---|
|
|
"ในตัวอย่างข้างต้น เราสร้างStorage
คลาสแยกต่างหาก ย้ายcount
และsum
ตัวแปรเข้าไป และประกาศให้เป็นสแตติกตัวแปรสแตติกสาธารณะสามารถเข้าถึงได้จากเมธอดใดก็ได้ในโปรแกรม (ไม่ใช่จากเมธอดเท่านั้น)"
"ฉันไม่เข้าใจอย่างถ่องแท้ แต่สิ่งนี้ดูเหมือนจะสะดวกสำหรับฉัน"
"มันก็เป็นเช่นนั้น และบางครั้งก็จำเป็น หากไม่มีตัวแปรคงที่และเมธอด เราคงติดอยู่"
“หวังว่าฉันจะค่อยๆ เข้าใจมันได้”
"ใช่ แน่นอน คุณจะทำ"
GO TO FULL VERSION