การเรียก Instance Methods
แนะนำใหม่| English | ความหมาย |
|---|---|
| instance method/ˈɪnstəns ˈmeθəd/ | วิธีทำงานของออบเจกต์ |
การเรียกใช้บนออบเจกต์
- Instance method ถูกเรียก บนออบเจกต์เฉพาะ โดยใช้ dot notation
word.length()เรียกlength()บนออบเจกต์word- ออบเจกต์ ก่อน จุดคือออบเจกต์ที่ method ทำงาน
- ต่างจาก class method คุณจำเป็นต้องมีออบเจกต์จริงเพื่อเรียกมัน
ออบเจกต์คือบริบท
- ภายใน instance method โค้ดจะทำงานกับ สถานะของออบเจกต์นั้น
"cat".length()ส่งคืน3;"hello".length()ส่งคืน5— method เดียวกัน แต่ต่างออบเจกต์- Method อ่าน (หรือแก้ไข) สถานะของออบเจกต์ที่ถูกเรียกใช้
- ออบเจกต์สองตัวจากคลาสเดียวสามารถให้ผลลัพธ์ที่แตกต่างกันจากการเรียกใช้เดียวกัน
พารามิเตอร์และค่าที่ส่งกลับ
- Instance methods สามารถรับ arguments และ return ค่าได้ เหมือนกับ class methods
"hello".substring(1, 3)ส่ง1และ3, ส่งคืน"el"- จับค่าที่ส่งกลับ:
String part = "hello".substring(1, 3); - ออบเจกต์ของจุดรวมกับ arguments bersama-samaจะตัดสินใจผลลัพธ์
Instance vs. class เปรียบเทียบข้างกัน
- Class method:
Math.sqrt(16)— จุดอยู่หลัง ชื่อคลาส - Instance method:
word.length()— จุดอยู่หลัง ออบเจกต์ - ถ้าต้องการข้อมูลของออบเจกต์เฉพาะ มันคือ instance method
- ถ้าเป็น utility ทั่วไปที่ไม่มีออบเจกต์ มันคือ class (static) method
Instance method ต้องใช้ออบเจกต์ก่อนจุด: word.length(), ไม่ใช่ String.length(). ออบเจกต์ ก่อน จุดให้ state ที่ method ทำงาน, ดังนั้นการเรียกใช้เดียวกันจึงให้ผลลัพธ์แตกต่างกันบนออบเจกต์ที่ต่างกัน Class methods (Math.sqrt) ใช้ชื่อคลาสแทน — การรู้ความแตกต่างระหว่างสองอย่างนี้บอกให้คุณว่าต้องใช้ออบเจกต์ก่อนหรือไม่
Method เดียวกัน แต่ต่างออบเจกต์:
String a = "cat", b = "tiger";a.length()→3(ทำงานบน"cat")b.length()→5(ทำงานบน"tiger") — ออบเจกต์ก่อนจุดเป็นตัวตัดสิน
A instance method ถูกเรียก บนออบเจกต์ ด้วย dot notation (word.length()); ออบเจกต์ก่อนจุดให้ state ที่ method ทำงานด้วย มันสามารถรับ arguments และ return ค่าได้เหมือน any method สิ่งนี้ขัดแย้งกับ class (static) method, ถูกเรียกบนชื่อคลาส (Math.sqrt(16))
Instance method ทำงานกับ object ของมัน
length() อ่านสถานะของ object ก่อนจุด
ข้อใดคือการเรียก instance method length ที่ถูกต้องบน String word?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Instance methods ถูกเรียกจาก object: object.method().
"tiger".length() ส่งคืนอะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
"tiger" มี 5 ตัวอักษร
Math.sqrt(16) เป็น class method และ word.length() เป็น instance method ความแตกต่างคือ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
ชื่อ class ก่อนจุด → class method; object → instance method
การเรียก instance method แบบเดียวกันสามารถให้ผลลัพธ์ที่แตกต่างกันบน object ที่ต่างกัน
Difficulty 1/5 · 100 coins + a small bonus on first completion today
object ก่อนจุดทำหน้าที่เป็นแหล่งข้อมูลสถานะ
Instance method ถูกเรียกจาก ___ เฉพาะเจาะจงโดยใช้ dot notation (หนึ่งคำ)
Difficulty 1/5 · 100 coins + a small bonus on first completion today
object.method() — object ทำหน้าที่เป็นบริบท