ค่าที่ส่งคืนและการโอเวอร์โหลด
เรียนรู้คำสั่ง return การส่งคืนก่อนจบ และการโอเวอร์โหลดเมธอดตามจำนวนและชนิดของพารามิเตอร์ รวมถึงตัวอย่าง varargs และการเลือกโอเวอร์โหลด
ค่าที่ส่งคืนและการโอเวอร์โหลด เป็นบทเรียน Java Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Java Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
ภาพรวม
เป้าหมาย: เชี่ยวชาญคำสั่งส่งค่ากลับและการโอเวอร์โหลดเมธอด คุณจะได้เห็นการส่งค่ากลับก่อนกำหนดหรือเงื่อนไขป้องกัน การโอเวอร์โหลดตามจำนวนและชนิด และตัวอย่างสั้น ๆ ของอาร์กิวเมนต์แปรผัน
การส่งค่ากลับและเงื่อนไขป้องกัน
การส่งค่ากลับ จะส่งค่ากลับไปยังผู้เรียกใช้และจบการทำงานของเมธอด เงื่อนไขป้องกันหรือการส่งค่ากลับก่อนกำหนดช่วยให้โค้ดเรียบง่ายขึ้นด้วยการจัดการกรณีพิเศษก่อน
public class Main {
// Double an integer and return the result
static int doubleIt(int x) {
return x * 2;
}
// Return a label using a simple early-return pattern (guard clause)
static String parity(int n) {
if (n % 2 == 0) {
return "even"; // early return ends the method here
}
return "odd"; // otherwise this path executes
}
public static void main(String[] args) {
System.out.println("doubleIt(7) = " + doubleIt(7));
System.out.println("parity(10) = " + parity(10));
System.out.println("parity(11) = " + parity(11));
}
}
การส่งค่ากลับหลายจุด
การส่งค่ากลับก่อนกำหนดเมื่อข้อมูลเข้าไม่ถูกต้องช่วยหลีกเลี่ยงการซ้อนบล็อกหลายชั้น ในที่นี้ การหารด้วยศูนย์จะส่งกลับ 0 ตามแนวทางง่าย ๆ (ภายหลังคุณจะได้เรียนรู้ข้อยกเว้น)
public class Main {
// Safe integer division with simple validation
static int safeDiv(int num, int den) {
if (den == 0) {
return 0; // simple policy: return 0 if denominator is zero
}
return num / den; // normal path
}
public static void main(String[] args) {
System.out.println("safeDiv(8, 2) = " + safeDiv(8, 2));
System.out.println("safeDiv(5, 0) = " + safeDiv(5, 0));
}
}
การโอเวอร์โหลดตามจำนวน
การโอเวอร์โหลด หมายถึงการใช้ชื่อเมธอดเดียวกันแต่มีรายการพารามิเตอร์ต่างกัน การเปลี่ยนจำนวนพารามิเตอร์ถือเป็นการโอเวอร์โหลดที่ถูกต้อง
public class Main {
// Overload 1: max of two numbers
static int max(int a, int b) {
return (a > b) ? a : b;
}
// Overload 2: max of three numbers (different parameter COUNT)
static int max(int a, int b, int c) {
int m = (a > b) ? a : b;
return (m > c) ? m : c;
}
public static void main(String[] args) {
System.out.println("max(3, 9) = " + max(3, 9));
System.out.println("max(3, 9, 5) = " + max(3, 9, 5));
}
}
การโอเวอร์โหลดตามชนิด
การโอเวอร์โหลดตาม ชนิด ช่วยให้คุณใช้ชื่อเดิมกับการดำเนินการที่เกี่ยวข้องกันได้ อาร์กิวเมนต์ตัวเลขต่างชนิดจะถูกเลื่อนชนิดไปยังลายเซ็นที่ตรงกันและเฉพาะเจาะจงที่สุด
public class Main {
// Overload for integers
static int add(int a, int b) {
return a + b;
}
// Overload for doubles (different parameter TYPES)
static double add(double a, double b) {
return a + b;
}
public static void main(String[] args) {
System.out.println("add(2, 3) = " + add(2, 3)); // calls int version
System.out.println("add(2.5, 3.5) = " + add(2.5, 3.5)); // calls double version
System.out.println("add(2, 3.5) = " + add(2, 3.5)); // numeric promotion chooses double version
}
}
การโอเวอร์โหลดแบบอาร์กิวเมนต์แปรผัน
อาร์กิวเมนต์แปรผัน (int...) จะรวบรวมอาร์กิวเมนต์ตั้งแต่ศูนย์ตัวขึ้นไป การเลือกโอเวอร์โหลดจะให้ความสำคัญกับการจับคู่แบบไม่ใช่อาร์กิวเมนต์แปรผันที่ตรงกันทุกประการ หากมี
public class Main {
// Specific overload for two ints
static int sum(int a, int b) {
return a + b;
}
// Varargs overload for many ints
static int sum(int... nums) {
int s = 0;
for (int i = 0; i < nums.length; i = i + 1) s = s + nums[i];
return s;
}
public static void main(String[] args) {
// Exact match beats varargs
System.out.println("sum(4, 5) = " + sum(4, 5)); // picks (int,int)
System.out.println("sum(1,2,3,4) = " + sum(1, 2, 3, 4)); // uses varargs
}
}
ตรวจสอบการโอเวอร์โหลด
ตรวจสอบอย่างรวดเร็ว: คู่ใดสามารถเป็นการโอเวอร์โหลดที่ถูกต้องภายในคลาสเดียวกัน
สรุปทบทวนและขั้นถัดไป
สรุปทบทวน: คุณได้ใช้การส่งค่ากลับและการส่งค่ากลับก่อนกำหนด สร้างการโอเวอร์โหลดที่ถูกต้องตามจำนวนและชนิด และฝึกใช้อาร์กิวเมนต์แปรผันแล้ว ขั้นถัดไป: ขอบเขตและช่วงอายุของตัวแปรและเมธอด
คำถามที่พบบ่อย
บทเรียน “ค่าที่ส่งคืนและการโอเวอร์โหลด” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ค่าที่ส่งคืนและการโอเวอร์โหลด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Java Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Java Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ค่าที่ส่งคืนและการโอเวอร์โหลด”
เรียนรู้คำสั่ง return การส่งคืนก่อนจบ และการโอเวอร์โหลดเมธอดตามจำนวนและชนิดของพารามิเตอร์ รวมถึงตัวอย่าง varargs และการเลือกโอเวอร์โหลด คุณปฏิบัติ Java Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Java Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Java Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “ค่าที่ส่งคืนและการโอเวอร์โหลด” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Java Academy นี้ได้ไหม
ได้ บทเรียน Java Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การกำหนดเมธอดและพารามิเตอร์
- ค่าที่ส่งคืนและการโอเวอร์โหลด
- ขอบเขตและอายุการใช้งาน