เราได้กำหนดคลาสเพื่อสร้างวัตถุอยู่เสมอ ออบเจ็กต์เป็นเอนทิตีที่มีฟังก์ชันการทำงาน ในขณะที่คลาสเป็นการจำแนกประเภทของออบเจ็กต์ นี่เป็นแนวคิดพื้นฐานของเชิงวัตถุ
ในการสืบทอด เราถือว่าคลาสเป็นวิชาที่สามารถขยายได้ ซึ่งช่วยเพิ่มความเข้าใจของเราในเรื่อง "คลาส"
ยังมีเรื่องให้หารืออีกมากเกี่ยวกับชั้นเรียนนี้ เราจะเจาะลึกต่อไป
สมาชิกข้อมูลคงที่
มีข้อมูลบางส่วนที่ใช้เพื่อแสดงสถานะของชั้นเรียน ตัวอย่างเช่น ในคลาส Human เราสามารถใช้ "population" เพื่อแสดงจำนวนออบเจ็กต์ทั้งหมดในคลาส Human "ประชากร" อธิบายสถานะของคลาสโดยตรง ไม่ใช่วัตถุ
ชนชั้นมนุษย์มีประชากร 8 คน
ออบเจ็กต์ทั้งหมดของคลาสแชร์ข้อมูล "ประชากร" ข้อมูลดังกล่าวเรียกว่าสมาชิกข้อมูลคลาส (ฟิลด์คลาส)
ในคำจำกัดความของคลาส เราใช้คีย์เวิร์ดแบบคงที่เพื่อประกาศสมาชิกข้อมูลคลาส เช่น:
คัดลอกรหัสรหัสดังต่อไปนี้:
คลาสมนุษย์
-
-
* ตัวสร้าง
-
มนุษย์สาธารณะ(int h)
-
นี่.ความสูง = h;
-
-
*อุปกรณ์เสริม
-
สาธารณะ int getHeight()
-
กลับ this.height;
-
-
* มิวเทเตอร์
-
โมฆะสาธารณะ growHeight (int h)
-
this.height = this.height + h;
-
-
*ลมหายใจ
-
ลมหายใจเป็นโมฆะสาธารณะ ()
-
System.out.println("hu...hu...");
-
ความสูง int ส่วนตัว
ประชากร int คงที่ของเอกชน
บูลีนคงที่สาธารณะ is_mammal = true;
-
เรากำหนดสมาชิกข้อมูลคลาสสองรายการ: ประชากร และ is_mammal วัตถุมนุษย์ทั้งหมดใช้ข้อมูลประชากรร่วมกัน โดยแอตทริบิวต์ is_mammal (เป็นสัตว์เลี้ยงลูกด้วยนม) ของวัตถุมนุษย์จะเป็นจริง
สมาชิกข้อมูลชั้นเรียนยังต้องตั้งค่าสิทธิ์การเข้าถึงด้วย สำหรับสมาชิกข้อมูลคลาสที่ประกาศเป็นสาธารณะ พวกเขาสามารถเข้าถึงได้โดยตรงจากภายนอกโดยใช้ class.field หรือ object.field (หากมีอ็อบเจ็กต์ของคลาสนี้อยู่) วิธีการเข้าถึงทั้งสองวิธีมีความสมเหตุสมผลเนื่องจากสมาชิกข้อมูลคลาสสามารถถือเป็นคุณลักษณะของคลาสและสามารถถือเป็นคุณลักษณะที่สมาชิกทุกคนใช้ร่วมกัน หากสมาชิกข้อมูลคลาสถูกกำหนดให้เป็นส่วนตัว สมาชิกข้อมูลคลาสจะสามารถเข้าถึงได้จากภายในคลาสเท่านั้น
(Is_mammal ถูกตั้งค่าเป็นสาธารณะด้านบนเพื่อการสาธิตเท่านั้น ซึ่งค่อนข้างอันตราย หากมีใครใช้ Human.is_mammal=false; มนุษย์ทุกคนจะต้องทนทุกข์ทรมาน ขอย้ำอีกครั้งว่าหลักการพื้นฐานคือตั้งค่าข้อมูลให้เป็นส่วนตัวมากที่สุด)
วิธีการคงที่
เรายังสามารถมีวิธีการเรียนซึ่งเป็นวิธีการประกาศเป็นแบบคงที่ เมธอดคลาสแสดงถึงการกระทำที่คลาสสามารถนำไปใช้ได้ และการดำเนินการไม่เกี่ยวข้องกับอ็อบเจ็กต์เฉพาะ หากมีการประกาศวิธีการแบบคงที่ จะสามารถเรียกได้เฉพาะข้อมูลและวิธีการแบบคงที่เท่านั้น แต่ไม่สามารถเรียกข้อมูลและวิธีการที่ไม่คงที่ได้
ในความเป็นจริง ในวิธีการคงที่ จะไม่มีการส่งผ่านพารามิเตอร์นี้และพารามิเตอร์ขั้นสูงโดยปริยาย เราไม่มีทางอ้างอิงข้อมูลและวิธีการที่เป็นของวัตถุได้ (ซึ่งเป็นสิ่งที่เราต้องการ)
จากสิ่งที่กล่าวข้างต้น เรามีความสัมพันธ์ดังต่อไปนี้:
เส้นประสีแดงบ่งบอกถึงการเข้าไม่ถึง กล่าวอีกนัยหนึ่งข้อมูลของวัตถุไม่สามารถเข้าถึงได้ในวิธีการเรียน
ต่อไปเราจะเพิ่มวิธีการคงที่ getPopulation() ซึ่งส่งคืนประชากรข้อมูลคงที่:
คัดลอกรหัสรหัสดังต่อไปนี้:
คลาสมนุษย์
-
-
* ตัวสร้าง
-
มนุษย์สาธารณะ(int h)
-
นี่.ความสูง = h;
-
-
*อุปกรณ์เสริม
-
สาธารณะ int getHeight()
-
กลับ this.height;
-
-
* มิวเทเตอร์
-
โมฆะสาธารณะ growHeight (int h)
-
this.height = this.height + h;
-
-
*ลมหายใจ
-
ลมหายใจเป็นโมฆะสาธารณะ ()
-
System.out.println("hu...hu...");
-
ความสูง int ส่วนตัว
-
* วิธีคงที่ ประชากรที่เข้าถึง
-
int สาธารณะคงที่ getPopulation ()
-
กลับ Human.population;
-
ประชากร int คงที่ของเอกชน
บูลีนคงที่ส่วนตัว is_mammal = true;
-
เมื่อเรียก class method เราสามารถเรียกมันผ่าน class.method() หรือ object.method() ตัวอย่างเช่น ใช้การทดสอบคลาสการทดสอบต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
การทดสอบในชั้นเรียนสาธารณะ
-
โมฆะสาธารณะคง main (String [] args)
-
System.out.println(Human.getPopulation());
Human aPerson = มนุษย์ใหม่ (160);
System.out.println(aPerson.getPopulation());
-
-
เราเรียกเมธอดคลาส getPopulation() นอกคำจำกัดความของคลาสได้สองวิธี
วิธีการวัตถุแก้ไขข้อมูลคลาส
เราเห็นว่าวิธีวัตถุสามารถเข้าถึงข้อมูลคลาสได้ นี่เป็นแนวคิดที่มีประโยชน์มาก สถานะของคลาสอาจเปลี่ยนแปลงไปตามอ็อบเจ็กต์ ตัวอย่างเช่น "ประชากร" ควรเพิ่มขึ้น 1 เมื่อมีการสร้างออบเจ็กต์ เราสามารถแก้ไขข้อมูล "ประชากร" ของคลาสในวิธีการของวัตถุ เราเข้าถึงสมาชิกข้อมูลคลาสในตัวสร้างด้านล่าง วิธีการก่อสร้างที่นี่คือวิธีที่ไม่คงที่ นั่นคือวิธีวัตถุ:
คัดลอกรหัสรหัสดังต่อไปนี้:
คลาสมนุษย์
-
-
* ตัวสร้าง
-
มนุษย์สาธารณะ(int h)
-
นี่.ความสูง = h;
Human.population = Human.population + 1;
-
-
*อุปกรณ์เสริม
-
สาธารณะ int getHeight()
-
กลับ this.height;
-
-
* มิวเทเตอร์
-
โมฆะสาธารณะ growHeight (int h)
-
this.height = this.height + h;
-
-
*ลมหายใจ
-
ลมหายใจเป็นโมฆะสาธารณะ ()
-
System.out.println("hu...hu...");
-
ความสูง int ส่วนตัว
-
* วิธีคงที่ ประชากรที่เข้าถึง
-
int สาธารณะคงที่ getPopulation ()
-
กลับ Human.population;
-
ประชากร int คงที่ของเอกชน
บูลีนคงที่ส่วนตัว is_mammal = true;
-
ทุกครั้งที่เราสร้างวัตถุ เราจะแก้ไขข้อมูลคลาสโดยวิธีการก่อสร้างของวัตถุ และเพิ่มข้อมูลคลาสประชากรขึ้น 1 ด้วยวิธีนี้ ประชากรสามารถสะท้อนถึงจำนวนวัตถุทั้งหมดที่อยู่ในคลาสนี้แบบเรียลไทม์ (คุณสามารถสร้างวัตถุหลายรายการในการทดสอบแล้วพิมพ์ Human.population)
นอกจากตัวอย่าง Constructor ที่ให้ไว้ข้างต้นแล้ว เรายังสามารถเข้าถึงข้อมูลคลาสด้วยวิธีอ็อบเจ็กต์ธรรมดาได้อีกด้วย
สุดท้าย
ความหมายพื้นฐานของคีย์เวิร์ดสุดท้ายคือ: ข้อมูล/วิธีการ/คลาสนี้ไม่สามารถเปลี่ยนแปลงได้
1. ข้อมูลประเภทพื้นฐานสุดท้าย: ค่าคงที่ซึ่งสามารถกำหนดได้เพียงครั้งเดียวและไม่สามารถแก้ไขได้อีก
2.วิธีการสุดท้าย: วิธีการนี้ไม่สามารถแทนที่ได้ วิธีการส่วนตัวมีค่าเริ่มต้นเป็นวิธีการสุดท้าย
3.คลาสสุดท้าย: คลาสนี้ไม่สามารถสืบทอดได้
ออบเจ็กต์ประเภทธรรมดาสามารถมีคีย์เวิร์ดสุดท้ายได้ ซึ่งหมายความว่าการอ้างอิงออบเจ็กต์ (ข้อมูลอ้างอิง) ไม่สามารถแก้ไขได้อีกต่อไป นั่นคือการอ้างอิงสามารถชี้ไปที่วัตถุเดียวเท่านั้น อย่างไรก็ตาม เนื้อหาของวัตถุสามารถเปลี่ยนแปลงได้ (คล้ายกับตัวชี้แบบคงที่ใน C) เราจะกล่าวถึงการอ้างอิงวัตถุในภายหลัง
หากประเภทข้อมูลพื้นฐานเป็นทั้งข้อมูลสุดท้ายและคงที่ ข้อมูลดังกล่าวจะจัดเก็บสำเนาของค่าคงที่เพียงสำเนาเดียวเท่านั้น เหมาะสำหรับเก็บค่าคงที่เช่น pi
สรุป
สนามคงที่ วิธีคงที่
class.static_method()
สุดท้าย