การเรียก Class Methods
แนะนำใหม่| English | ความหมาย |
|---|---|
| class method/klæs ˈmeθəd/ | เมทโด้ของคลาส |
| static method/ˈstætɪk ˈmeθəd/ | เมทโด้แบบสติก |
การเรียกวิธีของคลาส
- วิธีของคลาส (วิธีสแตติก) เป็น milikของคลาสเอง ไม่ใช่ของออบเจ็กต์
- เรียก它以 ชื่อคลาสและจุด:
Math.sqrt(16),Integer.parseInt("42") - ไม่ต้องมีออบเจ็กต์; วิธี resides on the class
- คีย์เวิร์ด
staticในหัวข้อทำเครื่องหมายวิธีว่าเป็นวิธีของคลาส
การส่งอาร์กิวเมนต์
- วาง อาร์กิวเมนต์ภายในวงเล็บ:
Math.max(3, 8) - ค่าจะถูกจับคู่กับพารามิเตอร์ของวิธี ตามตำแหน่ง
- ให้ จำนวนและ ประเภทที่ถูกต้องของอาร์กิวเมนต์ มิฉะนั้นจะไม่คอมไพล์
- ไม่มีอาร์กิวเมนต์? ยังต้องเขียนวงเล็บว่าง:
sc.nextLine()
การใช้ค่าที่คืน回来
- วิธีของคลาสส่วนใหญ่ คืนค่า — จับ它在ตัวแปร
double r = Math.sqrt(16);เก็บ4.0ในr- การเพิกเฉยต่อค่าที่คืนมาซึ่งมีประโยชน์ มักหมายความว่าลืมเก็บผลลัพธ์
- ค่าที่คืนมาสามารถนำไปใช้ในอөрขัสนอื่นได้โดยตรง
สแตติกเทียบกับอินสแตนซ์ — การดูเบื้องต้น
- วิธีของคลาส (สแตติก) ถูกเรียกบนคลาส:
Math.abs(-5) - วิธีอินสแตนซ์ (บทเรียนถัดไป) ถูกเรียกบน ออบเจ็กต์:
word.length() - สิ่งที่บอก: มีจุดหลัง ชื่อคลาส หรือหลัง ออบเจ็กต์ หรือไม่?
- วิธีของคลาสไม่ต้องใช้ออบเจ็กต์; วิธีอินสแตนซ์ต้องการ
เรียกวิธีของคลาสบน ชื่อคลาส ไม่ใช่ ออบเจ็กต์: Math.sqrt(16), ห้ามใช้ m.sqrt(16) จับคู่จำนวนและประเภทอาร์กิวเมนต์กับพารามิเตอร์ของวิธี และจำไว้ว่า เก็บค่าที่คืน回来 — Math.sqrt(16); ถ้าใช้คนเดียวคำนวณ 4.0 แล้วทิ้งไป วงเล็บว่างยังจำเป็นแม้ไม่มีอาร์กิวเมนต์
การรวมการเรียกวิธีของคลาสเข้าด้วยกัน:
int bigger = Math.max(3, 8);→biggerคือ8double root = Math.sqrt(bigger + 1);→Math.sqrt(9)→3.0.- ค่าที่คืน回来 (
8) ส่งตรงเข้าไปในคำเรียกถัดไป
การเรียกใช้ เมทโธดแบบคลาส (static method) จะทำผ่าน ชื่อคลาส: Math.sqrt(16). ส่ง อาร์กิวเมนต์ ที่ถูกต้อง (ตรงตำแหน่งและชนิด) ในวงเล็บ และ เก็บค่าที่ส่งกลับมา ไว้ในตัวแปรเพื่อใช้งานต่อ สิ่งนี้แตกต่างจาก เมทโธดแบบอินสแตนซ์ (instance method) ซึ่งจะถูกเรียกใช้กับออบเจ็กต์
การเรียก static method
Math.max ถูกเรียกบนคลาสและคืนค่าที่มากกว่า
คุณเรียก static method sqrt จากคลาส Math ได้อย่างถูกต้องอย่างไร?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Class methods ถูกเรียกบนชื่อคลาสด้วยจุด
Math.max(3, 8) คืนค่าอะไร?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
max คืนค่าที่มากกว่าของ Arguments ทั้งสอง
keyword ที่ระบุเมทอ ดว่าเป็น class (static) method คือ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
static หมายถึงเมทอ ดเป็นของคลาส ไม่ใช่ object
Math.sqrt(16); บนบรรทัดตัวเองเก็บ 4.0 ไว้เพื่อใช้ทีหลัง
Difficulty 1/5 · 100 coins + a small bonus on first completion today
มันคำนวณ 4.0 แต่ทิ้งไป — คุณต้องเก็บ return value
Class method ถูกเรียกบนชื่อคลาส ในขณะที่ instance method ถูกเรียกบน object
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Math.abs(-5) (class) vs word.length() (object).