คุณต้องเข้าใจความแตกต่างระหว่างคลาสและอินสแตนซ์ของคลาสนั้น หากคุณเห็นรถยนต์บนถนนคุณจะรู้ได้ทันทีว่าเป็นรถยนต์แม้ว่าคุณจะไม่เห็นรูปแบบหรือประเภทใดก็ตาม นี่เป็นเพราะคุณเปรียบเทียบสิ่งที่คุณเห็นกับรถ " คลาส " ชั้นเรียนมีลักษณะคล้ายกับรถทุกคัน คิดว่ามันเป็นเทมเพลตหรือไอเดีย
ในเวลาเดียวกันรถที่คุณเห็นเป็นตัวอย่างของรถ "ระดับ" เนื่องจากมีคุณสมบัติทั้งหมดที่คุณคาดหวัง: มีใครบางคนกำลังขับขี่มันมีเครื่องยนต์ล้อ
ดังนั้นคลาสพูดว่า "รถยนต์ทุกคันมีสี" และอินสแตนซ์บอกว่า "รถยนต์คันนี้เป็นสีแดง"
ในโลก OO Color
ที่คุณกำหนดระดับและภายในชั้นเรียนที่คุณกำหนดเขตของประเภท เมื่อคลาสนั้นอินสแตนซ์ (เมื่อคุณสร้างอินสแตนซ์เฉพาะ), หน่วยความจำจะถูกสงวนไว้สำหรับสีและคุณสามารถให้สีอินสแตนซ์ที่เฉพาะเจาะจงนี้ เนื่องจากคุณสมบัติเหล่านี้มีความเฉพาะเจาะจงจึงไม่คงที่
เขตข้อมูลแบบคงที่และวิธีการที่ใช้ร่วมกันกับทุกกรณี พวกเขามีไว้สำหรับค่าที่เฉพาะเจาะจงกับชั้นเรียนและไม่ใช่อินสแตนซ์ที่เฉพาะเจาะจง สำหรับวิธีการนี้มักจะเป็นวิธีการช่วยเหลือทั่วโลก (เช่นInteger.parseInt()
) สำหรับเขตข้อมูลมักจะเป็นค่าคงที่ (เช่นประเภทรถยนต์คือสิ่งที่คุณมีชุด จำกัด ซึ่งไม่เปลี่ยนบ่อย)
ในการแก้ปัญหาของคุณคุณต้องสร้างอินสแตนซ์ (สร้างวัตถุ) ของคลาสของคุณเพื่อให้รันไทม์สามารถจองหน่วยความจำสำหรับอินสแตนซ์ (มิฉะนั้นอินสแตนซ์ที่แตกต่างกันจะเขียนทับกันซึ่งคุณไม่ต้องการ)
ในกรณีของคุณลองใช้รหัสนี้เป็นบล็อกเริ่มต้น:
public static void main (String[] args)
{
try
{
MyProgram7 obj = new MyProgram7 ();
obj.run (args);
}
catch (Exception e)
{
e.printStackTrace ();
}
}
// instance variables here
public void run (String[] args) throws Exception
{
// put your code here
}
main()
วิธีการใหม่จะสร้างอินสแตนซ์ของคลาสที่มีอยู่ (ฟังดูแปลก ๆ แต่เนื่องจากmain()
ถูกสร้างด้วยคลาสแทนที่จะเป็นอินสแตนซ์สามารถทำได้) จากนั้นเรียกเมธอดอินสแตนซ์ ( run()
)
C
เขียนโปรแกรมที่สมบูรณ์แบบคงที่ทั้งหมดเช่นเดียวกับใน แต่มันจะไม่ดีมาก พยายามใช้ Java ตามที่ตั้งใจให้ใช้เป็นภาษาเชิงวัตถุ