ฉันมีชั้นเรียนและในชั้นนั้นฉันมีสิ่งนี้:
//some code
private int[] data = new int[3];
//some code
จากนั้นในตัวสร้างของฉัน:
public Date(){
data[0] = 0;
data[1] = 0;
data[2] = 0;
}
ถ้าฉันทำอย่างนี้ทุกอย่างก็โอเค ค่าข้อมูลเริ่มต้นจะเริ่มต้น แต่ถ้าฉันทำสิ่งนี้แทน:
public Date(){
int[] data = {0,0,0};
}
มันบอกว่า:
Local variable hides a field
ทำไม?
วิธีที่ดีที่สุดในการเริ่มต้นอาร์เรย์ภายในตัวสร้างคืออะไร?
dataหลัง"//some code"มีขอบเขตของคลาสทั้งหมด ในขณะที่ตัวแปรdataในตัวสร้างกำลังมีขอบเขตภายในตัวสร้าง และเมื่อสร้างตัวสร้างเสร็จตัวแปรจะถูกทำลาย และdataตัวแปรภายในตัวสร้างยังซ่อนตัวแปรด้วยชื่อเดียวกันในคลาส นี่เป็นการพิสูจน์ข้อผิดพลาดLocal variable hides a field