เมธอด (Method)
วันนี้เราจะมาเรียนรู้เกี่ยวกับเมธอด (Methods) ใน Java กัน เมธอดเป็นบล็อกของโค้ดที่ทำงานเฉพาะอย่าง และสามารถเรียกใช้ซ้ำได้
เมธอดคืออะไร?
เมธอดเป็นชุดคำสั่งที่ทำงานเฉพาะอย่าง เปรียบเสมือนฟังก์ชันในคณิตศาสตร์ ที่รับค่าเข้าไป ประมวลผล และส่งค่ากลับมา
โครงสร้างของเมธอด
ตัวปรับการเข้าถึง ประเภทค่าที่ส่งคืน ชื่อเมธอด(รายการพารามิเตอร์) {
// ส่วนของโค้ดที่ทำงาน
return ค่าที่ส่งคืน; // ถ้ามี
}ตัวอย่าง:
public int บวกเลข(int a, int b) {
return a + b;
}พารามิเตอร์ของเมธอด (Method Parameters)
พารามิเตอร์คือข้อมูลที่ส่งเข้าไปในเมธอด
การส่งค่าแบบ Pass by Value
Java ใช้การส่งค่าแบบ Pass by Value เสมอ นั่นคือ ส่งสำเนาของค่าเข้าไปในเมธอด
public void เปลี่ยนค่า(int x) {
x = 10; // ไม่มีผลต่อตัวแปรที่ส่งเข้ามา
}
public static void main(String[] args) {
int a = 5;
เปลี่ยนค่า(a);
System.out.println(a); // ยังคงแสดง 5
}การส่งออบเจ็กต์เป็นพารามิเตอร์
เมื่อส่งออบเจ็กต์ Java ส่งสำเนาของการอ้างอิง (reference) ไป:
class คน {
String ชื่อ;
คน(String ชื่อ) { this.ชื่อ = ชื่อ; }
}
public void เปลี่ยนชื่อ(คน บุคคล) {
บุคคล.ชื่อ = "ใหม่"; // มีผลต่อออบเจ็กต์จริง
}
public static void main(String[] args) {
คน สมชาย = new คน("สมชาย");
เปลี่ยนชื่อ(สมชาย);
System.out.println(สมชาย.ชื่อ); // แสดง "ใหม่"
}การโอเวอร์โหลดเมธอด (Method Overloading)
การโอเวอร์โหลดคือการมีหลายเมธอดที่ชื่อเหมือนกันแต่พารามิเตอร์ต่างกัน:
public int บวกเลข(int a, int b) {
return a + b;
}
public double บวกเลข(double a, double b) {
return a + b;
}
public int บวกเลข(int a, int b, int c) {
return a + b + c;
}Java จะเลือกเมธอดที่เหมาะสมตามประเภทและจำนวนของอาร์กิวเมนต์ที่ส่งเข้าไป
ขอบเขต (Scope) ของตัวแปร
ขอบเขตของตัวแปรคือบริเวณในโค้ดที่สามารถเข้าถึงตัวแปรนั้นได้
ตัวแปรสมาชิก (Instance Variables)
ประกาศนอกเมธอด สามารถเข้าถึงได้จากทุกเมธอดในคลาส:
public class ตัวอย่างขอบเขต {
private int ตัวแปรสมาชิก = 10; // ตัวแปรสมาชิก
public void แสดงค่า() {
System.out.println(ตัวแปรสมาชิก); // สามารถเข้าถึงได้
}
}ตัวแปรเฉพาะที่ (Local Variables)
ประกาศภายในเมธอด เข้าถึงได้เฉพาะภายในเมธอดนั้น:
public void ตัวอย่างเมธอด() {
int ตัวแปรเฉพาะที่ = 20; // ตัวแปรเฉพาะที่
System.out.println(ตัวแปรเฉพาะที่); // สามารถเข้าถึงได้เฉพาะในเมธอดนี้
}ตัวแปร Static
เป็นตัวแปรที่ใช้ร่วมกันในทุกอินสแตนซ์ของคลาส:
public class ตัวอย่างStatic {
private static int นับจำนวน = 0; // ตัวแปร static
public ตัวอย่างStatic() {
นับจำนวน++; // เพิ่มค่าทุกครั้งที่สร้างอินสแตนซ์ใหม่
}
public static int จำนวนอินสแตนซ์() {
return นับจำนวน;
}
}ตัวอย่างการใช้งานจริง
ลองมาดูตัวอย่างโปรแกรมที่ใช้เมธอด การโอเวอร์โหลด และขอบเขตต่างๆ กัน:
public class โปรแกรมคำนวณพื้นที่ {
private static final double PI = 3.14159; // ตัวแปร static final
// เมธอดคำนวณพื้นที่วงกลม
public double คำนวณพื้นที่(double รัศมี) {
return PI * รัศมี * รัศมี;
}
// เมธอดคำนวณพื้นที่สี่เหลี่ยม (โอเวอร์โหลด)
public double คำนวณพื้นที่(double ความกว้าง, double ความยาว) {
return ความกว้าง * ความยาว;
}
// เมธอดคำนวณพื้นที่สามเหลี่ยม (โอเวอร์โหลด)
public double คำนวณพื้นที่(double ฐาน, double สูง, String รูปร่าง) {
if (รูปร่าง.equalsIgnoreCase("สามเหลี่ยม")) {
return 0.5 * ฐาน * สูง;
} else {
return -1; // ค่าผิดพลาด
}
}
public static void main(String[] args) {
โปรแกรมคำนวณพื้นที่ เครื่องคำนวณ = new โปรแกรมคำนวณพื้นที่();
System.out.println("พื้นที่วงกลม: " + เครื่องคำนวณ.คำนวณพื้นที่(5));
System.out.println("พื้นที่สี่เหลี่ยม: " + เครื่องคำนวณ.คำนวณพื้นที่(4, 5));
System.out.println("พื้นที่สามเหลี่ยม: " + เครื่องคำนวณ.คำนวณพื้นที่(3, 4, "สามเหลี่ยม"));
}
}สรุป
เมธอดเป็นส่วนสำคัญในการเขียนโปรแกรม Java ช่วยให้เราสามารถจัดระเบียบโค้ด ทำให้โค้ดนำกลับมาใช้ใหม่ได้ และทำให้โปรแกรมอ่านและบำรุงรักษาได้ง่ายขึ้น การเข้าใจเรื่องพารามิเตอร์ การโอเวอร์โหลด และขอบเขตของตัวแปร จะช่วยให้คุณสามารถออกแบบและเขียนโปรแกรม Java ได้อย่างมีประสิทธิภาพมากขึ้น