SlideShare a Scribd company logo
บทที่ 8
เมธอด (Methods)
1.ความหมายของเมธอด
โปรแกรมในภาษาจาวานั้นประกอบด้วย object จากหลายๆคลาส ซึ่งมีปฏิสัมพันธ์ซึ่ง
กันและกัน object แต่ละอันจะประกอบไปด้วยส่วนของ attribute และเมธอด
(method) ซึ่งเมธอดก็คือกลุ่มของคาสั่งที่ถูกรวมเข้าไว้ภายใต้ชื่อหนึ่งๆ สาหรับทาหน้าที่ตามที่
ผู้เขียนโปรแกรมกาหนด
2. การประกาศเมธอด
การประกาศเมธอดแต่ละครั้ง จะต้องประกาศไว้ในคลาสใดคลาสหนึ่งเสมอ รูปแบบของ
การประกาศ เมธอดจะมีลักษณะโดยทั่วไปดังต่อไปนี้
โดยที่ modifier คือ คีย์เวิร์ดที่กาหนดคุณสมบัติการเข้าถึงเมธอด
return_type คือ ชนิดของข้อมูลที่เมธอดจะส่งค่ากลับ ถ้าในกรณีที่ไม่มีการส่งค่าใดๆ
กลับจะกาหนดให้เป็น void
MethodName คือ ชื่อเมธอด
parameter คือ พารามิเตอร์ที่ใช้ในการรับข้อมูล
method_body คือ ชุดคาสั่งการทางานของเมธอด
varValue คือ ค่าที่ต้องการส่งค่ากลับ ในกรณีที่กาหนดให้ return_type เป็น
void จะไม่มีคาสั่ง return
3. อาร์กิวเมนต์ (Argument) และพารามิเตอร์ (Parameter)
ในการเรียกใช้เมธอดนั้น เราสามารถส่งผ่านข้อมูลให้กับเมธอดเพื่อให้เมธอดนั้นสามารถ
นาข้อมูลไปใช้ประมวลผลได้ค่าของข้อมูลที่ส่งให้กับเมธอด เรียกว่า อาร์กิวเมนต์ (argument)
เช่น ในการเรียกใช้คาสั่ง System.out.println("Hello");
“Hello” เป็น argument ที่ส่งให้กับเมธอด println() ซึ่งเมื่อมีการส่งค่า
argument ให้กับเมธอดแล้ว ที่ตัวของเมธอดจะต้องมีการสร้างตัวแปรเพื่อใช้รับค่า
argument นั้น ตัวแปรที่ถูกสร้างขึ้นมานี้มีชื่อเรียกว่า พารามิเตอร์ (parameter)
จากตัวอย่างที่ 1 newDay, newMonth และ newYear คือ parameter ของเมธ
อด setDate ในการเรียกใช้งานเมธอดนั้น จานวน argument ที่จะส่งให้กับเมธอดจะต้อง
มีจานวนตรงกับจานวน parameter ที่จะมารับเสมอ
จากตัวอย่างที่ 2 ค่า 18, 10 และ 2556 คือ argument ที่ส่งให้กับเมธอด setDate โดย
ค่าเหล่านี้จะถูกส่งไปเก็บไว้ที่ parameter ที่ชื่อว่า newDay, newMonth และ
newYear ตามลาดับ
4. การเรียกใช้งานเมธอด
การเรียกใช้งานเมธอดจะมีส่วนหลักๆ อยู่ 2 ส่วน คือ การส่งค่า arguments ให้กับ
เมธอด และการรับค่าที่ส่งคืนมาจากเมธอด
4.1 การส่งค่า argument ให้กับเมธอด
ในการจะส่งค่า argument ให้กับเมธอด เราจะต้องประกาศ parameter
สาหรับเมธอดนั้นๆ โดยจะต้องระบุชนิดข้อมูล ตามด้วยชื่อของ parameter ถ้าหากต้องการให้มี
parameter มากกว่าหนึ่งตัว สามารถทาได้โดยใช้เครื่องหมาย , (comma) คั่นในตอนที่เรา
สร้างเมธอด ดูได้จากตัวอย่างที่ 1
การเรียกใช้เมธอด หากเมธอดนั้นมีการรับค่าด้วย parameter เราต้องทาการส่ง
argument ให้กับเมธอดนั้น โดยที่จานวน argument นั้นต้องเท่ากับจานวน
parameter ที่เราประกาศไว้โดยคั่นระหว่าง argument แต่ละตัวด้วยเครื่องหมาย
comma และชนิดข้อมูลของ argument นั้นต้องตรงกับชนิดข้อมูลของ parameter
ด้วย ดูได้จากตัวอย่างที่ 2
ค่าของ argument ที่จะส่งนั้น อาจจะเป็นค่าคงที่(constant) เช่น 10 (int
constant), -1.2 (double constant), ‘a’ (char constant), true
(boolean constant) หรือตัวแปร (variable) เช่น x, myDog, std1.name
หรือนิพจน์ (expression) เช่น x*x / 2 - 1.732, date.getDay() ก็ได้แต่ชนิด
ข้อมูลนั้นจะต้องสอดคล้องกับชนิดข้อมูลของ parameter
การส่งค่าให้กับเมธอดในภาษาจาวานั้น เป็นการส่งค่าแบบ pass by value
หมายความว่า เมื่อมีการเรียกใช้งานเมธอด โปรแกรมจะทาการสร้างตัวแปรขึ้นมาใหม่ในเมธอดที่ถูก
เรียก เพื่อมารับค่าที่จะถูกส่งเข้ามา การแก้ไขค่าของ parameter ในเมธอดจึงไม่ส่งผลกระทบ
กับตัวแปรต้นฉบับหากตัวแปรนั้นเป็นข้อมูลชนิดพื้นฐาน (primitive type)
จากตัวอย่างที่ 3 สาเหตุที่ x ยังคงมีค่าเท่ากับ 10 ภายหลังจากการเรียกใช้งานเมธอด add5
เนื่องจากว่าตัวแปร x ที่อยู่ใน main กับตัวแปร x ที่อยู่ในเมธอด add5 เป็นคนละตัวกันดังนั้น
คาสั่ง x = x + 5 จึงส่งผลกับแปร x ที่อยู่ในเมธอด add5 เท่านั้น และเมื่อเรากลับมาที่ main
ค่าของ x ใน main จึงมีค่าเท่าเดิม
อย่างไรก็ตาม หาก object ที่ส่งให้กับเมธอดมีชนิดข้อมูลเป็นแบบอ้างอิง
(reference type) การเปลี่ยนค่า attribute ของ object นั้นๆในเมธอด จะส่งผล
กระทบกับ object ต้นฉบับด้วย ดังตัวอย่างต่อไปนี้
METHODS
จากตัวอย่างที่ 4 สาเหตุที่ num มีค่าเปลี่ยนไปหลังจากเรียกใช้งานเมธอดก็เพราะว่าตัวแปรชนิด
object ทุกๆตัวนั้นเป็นประเภท reference type เสมอ ซึ่งสิ่งที่เก็บอยู่ในตัวแปร
reference type คือตาแหน่งที่อยู่(adddress)ในหน่วยความจาที่ object นั้นๆ ถูกเก็บ
อยู่ในตอนที่มันถูกสร้างขึ้นมาด้วยคาสั่ง new ดังนั้นในตอนที่เราเรียกใช้เมธอด add10(obj)
นั้น ค่าที่ถูกส่งให้กับเมธอดคือตาแหน่งที่อยู่ของตัว object เมื่อเราทาการเปลี่ยนค่าของ object
ในตัวเมธอด ค่านั้นจะถูกเปลี่ยนที่ตัว object ตามตาแหน่งที่อยู่ที่มันถูกเก็บไว้ตัว object
ต้นฉบับจึงถูกเปลี่ยนค่าไปด้วย
4.2 การรับค่าคืนจากเมธอด
หากเมธอดมีการส่งค่าคืน (มี return type ที่ไม่ใช่ void) เราจะต้องสั่งให้เมธอด
ทาการส่งค่ากลับ ซึ่งทาได้โดยใช้คาสั่ง return value; โดยวางคาสั่งนี้ไว้ที่ตัวเมธอด ทั้งนี้
value คือค่าที่เราต้องการส่งกลับ ดังตัวอย่างต่อไปนี้
จากตัวอย่างที่ 5 ค่าที่ส่งกลับมาจากเมธอดนั้น เราสามารถที่จะนาไปเก็บไว้ในตัวแปรก่อน (โดยที่
ชนิดข้อมูลจะต้องตรงกับชนิดข้อมูลที่เมธอด return มาให้) หรือว่าเราสามารถที่จะนาไปใช้เลย
โดยตรงก็ได้ดังเช่นบรรทัดที่ 7 และ 9 ตามลาดับ
5. ประเภทของเมธอด
เมธอดในภาษาจาวา สามารถแบ่งออกได้เป็น 3 ประเภทหลักๆตามหน้าที่การใช้งาน ดังนี้
1) Instance method
2) Static method
3) Constructor method
5.1 Instance Method
Instance method คือเมธอดที่กระทากับตัว object โดยตรง ดังเช่นใน
ตัวอย่างที่ 1 setDate ถือเป็น instance method เพราะว่า setDate จะกระทากับ
object ที่เรียกใช้มันเท่านั้น จากตัวอย่างที่ 2 จะเห็นได้ว่า การจะเรียกใช้งานเมธอด setDate
นั้น เราจะต้องทาการสร้าง object (ในที่นี้คือ date) ขึ้นมาก่อน แล้วเรียกใช้ผ่าน object นั้น
(บรรทัดที่ 3 และ 4)
เราสามารถใช้คีย์เวิร์ด this เพื่อเรียกถึง object ที่ทาการเรียกใช้เมธอดนั้นๆได้ตัวอย่างเช่น
เราสามารถใช้คีย์เวิร์ด this เพื่อเรียกถึง object ที่ทาการเรียกใช้เมธอดนั้นๆได้ตัวอย่างเช่น
จากตัวอย่างที่ 6 ในเมธอด setDate มี parameter 3 ตัว ได้แก่ day, month และ
year ซึ่งจะเห็นว่าหากเราเขียนว่า day = day; อาจจะทาให้โปรแกรมทางานผิดพลาดได้
เพราะว่า day ทั้งสองตัวนั้นอ้างถึงตัวแปรเดียวกันที่เป็น parameter ของเมธอด การที่เราจะ
อ้างอิงถึง day ที่เป็น instance variable นั้น ทาได้โดยใช้ this.day แทน ซึ่ง this จะมี
ค่าเท่ากับตัว object ที่เรียกใช้อย่างไรก็ตาม ไม่แนะนาให้ตั้งชื่อ parameter ให้เหมือนกับ
ชื่อ instance variable เพราะอาจจะทาให้สับสนได้ดังนั้น ควรจะตั้งชื่อ parameter ให้
ต่างจากชื่อ attribute ดังเช่นตัวอย่างที่ 1
5.2 Static Method
Static method (หรือเรียกอีกชื่อหนึ่งว่า class method) คือเมธอดที่มี
พฤติกรรมที่ไม่ขึ้นอยู่กับ object ใดๆ ตัวอย่างเช่น เมธอด abs สาหรับหาค่าสัมบูรณ์นั้น ควรจะ
มีพฤติกรรมที่ไม่ขึ้นอยู่กับ object ที่จะทาการเรียกใช้แต่ขึ้นอยู่กับ argument ของเมธอด
เท่านั้น นอกจากนี้ ผู้ใช้ควรจะสามารถเรียกใช้เมธอด abs ได้โดยไม่ต้องทาการสร้าง object
ขึ้นมาใหม่ วิธีการทาเช่นนี้ในภาษาจาวาทาได้โดยใส่คีย์เวิร์ด static ไว้หน้าชื่อของเมธอด (แต่อยู่
หลังจาก access modifier) ดังตัวอย่างต่อไปนี้
การเรียกใช้งาน static method นั้น เราสามารถเรียกใช้งานผ่านชื่อคลาสได้โดยตรงโดยไม่
ต้องมีการสร้าง object ขึ้นมาก่อน ดังตัวอย่างที่ 8
ข้อควรระวังสาหรับการใช้งาน static method ก็คือ เราไม่สามารถเรียกใช้งาน instance
variable หรือ instance method จากภายใน static method ได้แต่ยังเราสามารถ
เรียกใช้งาน static variable หรือ static method อื่นๆได้อยู่
5.3 Constructor Method
Constructor method เป็นเมธอดที่มีลักษณะพิเศษ คือมีชื่อเหมือนกับชื่อคลาส
และไม่มีการกาหนดชนิดของข้อมูลที่ถูกส่งกลับ(return type) โดย constructor จะถูก
เรียกใช้เมื่อมีการใช้คาสั่ง new ดังเช่นบรรทัดที่ 3 ของตัวอย่างที่ 2 ทั้งนี้หน้าที่ของ
constructor คือกาหนดค่าเริ่มต้นให้กับ attribute ของ object ที่ถูกสร้างขึ้นมา
การประกาศ constructor สามารถทาได้เหมือนกับเมธอดอื่นๆ ตัวอย่างเช่น
ตัวอย่างที่ 9 คลาส Date ประกอบด้วย constructor สองตัว คือบรรทัดที่ 4 – 8 ซึ่งเป็น
constructor ที่ไม่มีการรับค่า parameter และบรรทัดที่ 10 – 14 ซึ่งมีการรับค่า
parameter เป็น int 3 ตัว (การที่เรามีเมธอดที่มีชื่อเหมือนกันมากกว่าหนึ่งเมธอด จะเรียกว่า
method overloading ซึ่งรายละเอียดจะกล่าวในหัวข้อที่ 6)
หากเราสร้างคลาสโดยไม่สร้าง constructor ขึ้นมาเอง (ดังเช่นตัวอย่างที่ 1) จาวาจะทาการ
สร้าง default constructor ที่ไม่มีการรับค่า parameter แล้วกาหนดค่า instance
variable ให้เป็นค่าตาม default value ให้โดยอัตโนมัติ
อย่างไรก็ตาม หากเราสร้าง constructor ขึ้นมาเองอย่างน้อยหนึ่งตัว จาวาจะไม่สร้าง
default construct ให้กับเรา และถ้าเราต้องการใช้ constructor ที่ไม่รับค่า
argument เราจะต้องสร้างขึ้นมาเอง ตัวอย่างเช่น
METHODS
6. Method Overloading
Method overloading คือการที่เมธอดมากกว่าหนึ่งตัวที่อยู่ภายในคลาสเดียวกัน
มีชื่อเหมือนกัน (เช่น จากตัวอย่างที่ 9 มี constructor ที่ชื่อว่า Date เหมือนกันสองตัว)
Method overloading สามารถทาได้ถ้าหากว่ามีอย่างน้อยหนึ่งข้อต่อไปนี้เป็น
จริง
(1) จานวน parameter ของเมธอดที่จะ overload นั้นไม่เท่ากัน
(2) ชนิดข้อมูลของ parameter นั้นต่างกันอย่างน้อยหนึ่งตัว
จากตัวอย่างที่ 11 จะสังเกตเห็นว่า คลาส Date ในที่นี้มีเมธอด add ทั้งหมด 3 เมธอด
ซึ่งเมธอดทั้งหมดผ่านเงื่อนไขในข้อ (1) หรือ (2)
ข้อควรระวัง: เราไม่สามารถ overload เมธอดโดยใช้ return type ได้ตัวอย่างเช่น
ซึ่งจะให้ผลลัพธ์ error
7. ตัวอย่างเมธอดสาเร็จรูปในภาษาจาวา
ภาษาจาวานั้น ได้สร้างเมธอดสาเร็จรูปบางส่วนมาให้แล้ว โดยที่เราสามารถเรียกใช้งาน
ได้เลย ตัวอย่างเช่น เมธอดที่เกี่ยวกับการประมวลผลเกี่ยวกับตัวเลข จะอยู่ในคลาส Math หรือ เมธ
อดที่เกี่ยวกับการจัดการกับ string จะอยู่ในคลาส String
ตัวอย่างของเมธอดสาเร็จรูปที่น่าสนใจมีดังนี้
เมธอดเหล่านี้เป็น static method เราจึงสามารถเรียกใช้งานเมธอดเหล่านี้ได้โดยคาสั่ง
Math.method_name(parameters)
METHODS
เมธอดเหล่านี้เป็น instance method เวลาจะเรียกใช้เราต้องเรียกใช้ผ่าน object
ตัวอย่างเช่น
"abc".length();
หรือ
String s = "This is a sample string";
boolean flag = s.contains("sample");
หมายเหตุ: เมธอด concat, toLowerCase, toUppercase จะไม่ทาการเปลี่ยนค่าของ
ตัว string ที่เรียกใช้โดยตรง แต่จะ return ค่าของ string อันใหม่ที่เป็นผลลัพธ์ของเมธอด
แทน ดังนั้น หากเราต้องการเปลี่ยนค่าของตัวแปรต้นฉบับโดยเมธอด concat,
toLowerCase, toUppercase, etc. เราจะต้องมีการกาหนดค่าให้กับมันเอง เช่น
s = s.concat("abc");
s = s.toLowerCase();
s = s.toUpperCase();
จัดทาโดย
นางสาวกาญจนา ถึกจรูญ เลขที่21
นางสาวขวัญจิรา โพธิ์ล้อม เลขที่28
นางสาวจิดาภา บารุงวงศ์ เลขที่ 29
นางสาวณัฐฐา ศรีอินทร์ เลขที่ 30
นางสาวพิมพ์ลภัส กลมทุกสิ่ง เลขที่ 31
นางสาวสิริลักษณ์ วุฒิมงคลกุล เลขที่32
นางสาวเกสรา วัจนะ เลขที่ 38
ชั้น มัธยมศึกษาปีที่ 6/2
เสนอ
คุณครู ทรงศักดิ์ โพธิ์เอี่ยม

More Related Content

PPTX
บทที่ 8 Methods
PDF
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
PPTX
คลาสและการเขียนโปรแกรมเชิงวัตถุ
PPTX
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
PDF
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
PPTX
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
PDF
2.Java fundamentals
PPT
บทที่ 6 คลาสและการเขียนโปรแกรม
บทที่ 8 Methods
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุ
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
2.Java fundamentals
บทที่ 6 คลาสและการเขียนโปรแกรม

What's hot (20)

PDF
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น2
PDF
พื้นฐานภาษาจาวา
PDF
6.Flow control
PDF
Java-Chapter 01 Introduction to Java Programming
PDF
Java-Chapter 06 File Operations
PDF
5.Methods cs
PDF
4.Oop
PDF
Java-Chapter 07 One Dimensional Arrays
PDF
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
PDF
3.Expression
PDF
งานนำเสนอ1
PPTX
PPT
Java Programming [4/12] : Object Oriented Concept
DOC
Vb6 5 ข้อมูลและตัวแปร
PPT
PDF
งานนำเสนอ1
PDF
Power point
PDF
8.Inheritance
PDF
Java Programming: อะเรย์และคอลเล็กชั่น
PDF
Sheet4
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น2
พื้นฐานภาษาจาวา
6.Flow control
Java-Chapter 01 Introduction to Java Programming
Java-Chapter 06 File Operations
5.Methods cs
4.Oop
Java-Chapter 07 One Dimensional Arrays
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
3.Expression
งานนำเสนอ1
Java Programming [4/12] : Object Oriented Concept
Vb6 5 ข้อมูลและตัวแปร
งานนำเสนอ1
Power point
8.Inheritance
Java Programming: อะเรย์และคอลเล็กชั่น
Sheet4
Ad

Similar to METHODS (20)

DOC
Chapter3
PPTX
นำเสนอMethods
PPTX
นำเสนอMethods
PPTX
เมธอด
PPTX
เมธอด กลุ่ม3
PPTX
เมธอด Method
PPTX
Computer Programming 4
PDF
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
PPTX
เมธอด
PPTX
เมธอด
PDF
Java Programming: หลักการเชิงอ็อบเจกต์
PDF
DOCX
Method
PDF
Java-Chapter 12 Classes and Objects
PPT
07 methods
Chapter3
นำเสนอMethods
นำเสนอMethods
เมธอด
เมธอด กลุ่ม3
เมธอด Method
Computer Programming 4
Java Programming: การเขียนโปรแกรมภาษาจาวาเชิงอ็อบเจกต์
เมธอด
เมธอด
Java Programming: หลักการเชิงอ็อบเจกต์
Method
Java-Chapter 12 Classes and Objects
07 methods
Ad

More from kessara61977 (20)

DOCX
Is3sharinglove
DOCX
โครงการปันรัก
DOCX
It news sutida
DOCX
It news kessara
DOCX
It news kessara
DOCX
Is3โครงการปันรัก
DOCX
บทที่ 1 กลุ่มที่ 3
PPTX
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ นักเรียนชั้น ม.4-5
PPTX
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ
PPTX
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ ม.4-5
DOCX
สังคมก้มหน้า บท-1
DOCX
โครงงานสำรวจพฤติกรรมการใช้สมาร์ทโฟนนักเรียนชั้น ม.4-5
DOCX
โครงงานสำรวจ
DOC
การสำรวจพฤติกรรมการใช้สมาร์ทโฟน
PPTX
บทที่ 2
PPTX
โครงงาน Is2
PPTX
โครงงาน Is2
PPTX
โครงงาน Is2
PPTX
Internet
PPTX
กลุ่ม 4 Internet
Is3sharinglove
โครงการปันรัก
It news sutida
It news kessara
It news kessara
Is3โครงการปันรัก
บทที่ 1 กลุ่มที่ 3
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ นักเรียนชั้น ม.4-5
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ ม.4-5
สังคมก้มหน้า บท-1
โครงงานสำรวจพฤติกรรมการใช้สมาร์ทโฟนนักเรียนชั้น ม.4-5
โครงงานสำรวจ
การสำรวจพฤติกรรมการใช้สมาร์ทโฟน
บทที่ 2
โครงงาน Is2
โครงงาน Is2
โครงงาน Is2
Internet
กลุ่ม 4 Internet

METHODS

  • 2. 1.ความหมายของเมธอด โปรแกรมในภาษาจาวานั้นประกอบด้วย object จากหลายๆคลาส ซึ่งมีปฏิสัมพันธ์ซึ่ง กันและกัน object แต่ละอันจะประกอบไปด้วยส่วนของ attribute และเมธอด (method) ซึ่งเมธอดก็คือกลุ่มของคาสั่งที่ถูกรวมเข้าไว้ภายใต้ชื่อหนึ่งๆ สาหรับทาหน้าที่ตามที่ ผู้เขียนโปรแกรมกาหนด
  • 3. 2. การประกาศเมธอด การประกาศเมธอดแต่ละครั้ง จะต้องประกาศไว้ในคลาสใดคลาสหนึ่งเสมอ รูปแบบของ การประกาศ เมธอดจะมีลักษณะโดยทั่วไปดังต่อไปนี้
  • 4. โดยที่ modifier คือ คีย์เวิร์ดที่กาหนดคุณสมบัติการเข้าถึงเมธอด return_type คือ ชนิดของข้อมูลที่เมธอดจะส่งค่ากลับ ถ้าในกรณีที่ไม่มีการส่งค่าใดๆ กลับจะกาหนดให้เป็น void MethodName คือ ชื่อเมธอด parameter คือ พารามิเตอร์ที่ใช้ในการรับข้อมูล method_body คือ ชุดคาสั่งการทางานของเมธอด varValue คือ ค่าที่ต้องการส่งค่ากลับ ในกรณีที่กาหนดให้ return_type เป็น void จะไม่มีคาสั่ง return
  • 5. 3. อาร์กิวเมนต์ (Argument) และพารามิเตอร์ (Parameter) ในการเรียกใช้เมธอดนั้น เราสามารถส่งผ่านข้อมูลให้กับเมธอดเพื่อให้เมธอดนั้นสามารถ นาข้อมูลไปใช้ประมวลผลได้ค่าของข้อมูลที่ส่งให้กับเมธอด เรียกว่า อาร์กิวเมนต์ (argument) เช่น ในการเรียกใช้คาสั่ง System.out.println("Hello"); “Hello” เป็น argument ที่ส่งให้กับเมธอด println() ซึ่งเมื่อมีการส่งค่า argument ให้กับเมธอดแล้ว ที่ตัวของเมธอดจะต้องมีการสร้างตัวแปรเพื่อใช้รับค่า argument นั้น ตัวแปรที่ถูกสร้างขึ้นมานี้มีชื่อเรียกว่า พารามิเตอร์ (parameter)
  • 6. จากตัวอย่างที่ 1 newDay, newMonth และ newYear คือ parameter ของเมธ อด setDate ในการเรียกใช้งานเมธอดนั้น จานวน argument ที่จะส่งให้กับเมธอดจะต้อง มีจานวนตรงกับจานวน parameter ที่จะมารับเสมอ
  • 7. จากตัวอย่างที่ 2 ค่า 18, 10 และ 2556 คือ argument ที่ส่งให้กับเมธอด setDate โดย ค่าเหล่านี้จะถูกส่งไปเก็บไว้ที่ parameter ที่ชื่อว่า newDay, newMonth และ newYear ตามลาดับ
  • 8. 4. การเรียกใช้งานเมธอด การเรียกใช้งานเมธอดจะมีส่วนหลักๆ อยู่ 2 ส่วน คือ การส่งค่า arguments ให้กับ เมธอด และการรับค่าที่ส่งคืนมาจากเมธอด 4.1 การส่งค่า argument ให้กับเมธอด ในการจะส่งค่า argument ให้กับเมธอด เราจะต้องประกาศ parameter สาหรับเมธอดนั้นๆ โดยจะต้องระบุชนิดข้อมูล ตามด้วยชื่อของ parameter ถ้าหากต้องการให้มี parameter มากกว่าหนึ่งตัว สามารถทาได้โดยใช้เครื่องหมาย , (comma) คั่นในตอนที่เรา สร้างเมธอด ดูได้จากตัวอย่างที่ 1
  • 9. การเรียกใช้เมธอด หากเมธอดนั้นมีการรับค่าด้วย parameter เราต้องทาการส่ง argument ให้กับเมธอดนั้น โดยที่จานวน argument นั้นต้องเท่ากับจานวน parameter ที่เราประกาศไว้โดยคั่นระหว่าง argument แต่ละตัวด้วยเครื่องหมาย comma และชนิดข้อมูลของ argument นั้นต้องตรงกับชนิดข้อมูลของ parameter ด้วย ดูได้จากตัวอย่างที่ 2 ค่าของ argument ที่จะส่งนั้น อาจจะเป็นค่าคงที่(constant) เช่น 10 (int constant), -1.2 (double constant), ‘a’ (char constant), true (boolean constant) หรือตัวแปร (variable) เช่น x, myDog, std1.name หรือนิพจน์ (expression) เช่น x*x / 2 - 1.732, date.getDay() ก็ได้แต่ชนิด ข้อมูลนั้นจะต้องสอดคล้องกับชนิดข้อมูลของ parameter การส่งค่าให้กับเมธอดในภาษาจาวานั้น เป็นการส่งค่าแบบ pass by value หมายความว่า เมื่อมีการเรียกใช้งานเมธอด โปรแกรมจะทาการสร้างตัวแปรขึ้นมาใหม่ในเมธอดที่ถูก เรียก เพื่อมารับค่าที่จะถูกส่งเข้ามา การแก้ไขค่าของ parameter ในเมธอดจึงไม่ส่งผลกระทบ กับตัวแปรต้นฉบับหากตัวแปรนั้นเป็นข้อมูลชนิดพื้นฐาน (primitive type)
  • 10. จากตัวอย่างที่ 3 สาเหตุที่ x ยังคงมีค่าเท่ากับ 10 ภายหลังจากการเรียกใช้งานเมธอด add5 เนื่องจากว่าตัวแปร x ที่อยู่ใน main กับตัวแปร x ที่อยู่ในเมธอด add5 เป็นคนละตัวกันดังนั้น คาสั่ง x = x + 5 จึงส่งผลกับแปร x ที่อยู่ในเมธอด add5 เท่านั้น และเมื่อเรากลับมาที่ main ค่าของ x ใน main จึงมีค่าเท่าเดิม อย่างไรก็ตาม หาก object ที่ส่งให้กับเมธอดมีชนิดข้อมูลเป็นแบบอ้างอิง (reference type) การเปลี่ยนค่า attribute ของ object นั้นๆในเมธอด จะส่งผล กระทบกับ object ต้นฉบับด้วย ดังตัวอย่างต่อไปนี้
  • 12. จากตัวอย่างที่ 4 สาเหตุที่ num มีค่าเปลี่ยนไปหลังจากเรียกใช้งานเมธอดก็เพราะว่าตัวแปรชนิด object ทุกๆตัวนั้นเป็นประเภท reference type เสมอ ซึ่งสิ่งที่เก็บอยู่ในตัวแปร reference type คือตาแหน่งที่อยู่(adddress)ในหน่วยความจาที่ object นั้นๆ ถูกเก็บ อยู่ในตอนที่มันถูกสร้างขึ้นมาด้วยคาสั่ง new ดังนั้นในตอนที่เราเรียกใช้เมธอด add10(obj) นั้น ค่าที่ถูกส่งให้กับเมธอดคือตาแหน่งที่อยู่ของตัว object เมื่อเราทาการเปลี่ยนค่าของ object ในตัวเมธอด ค่านั้นจะถูกเปลี่ยนที่ตัว object ตามตาแหน่งที่อยู่ที่มันถูกเก็บไว้ตัว object ต้นฉบับจึงถูกเปลี่ยนค่าไปด้วย
  • 13. 4.2 การรับค่าคืนจากเมธอด หากเมธอดมีการส่งค่าคืน (มี return type ที่ไม่ใช่ void) เราจะต้องสั่งให้เมธอด ทาการส่งค่ากลับ ซึ่งทาได้โดยใช้คาสั่ง return value; โดยวางคาสั่งนี้ไว้ที่ตัวเมธอด ทั้งนี้ value คือค่าที่เราต้องการส่งกลับ ดังตัวอย่างต่อไปนี้ จากตัวอย่างที่ 5 ค่าที่ส่งกลับมาจากเมธอดนั้น เราสามารถที่จะนาไปเก็บไว้ในตัวแปรก่อน (โดยที่ ชนิดข้อมูลจะต้องตรงกับชนิดข้อมูลที่เมธอด return มาให้) หรือว่าเราสามารถที่จะนาไปใช้เลย โดยตรงก็ได้ดังเช่นบรรทัดที่ 7 และ 9 ตามลาดับ
  • 14. 5. ประเภทของเมธอด เมธอดในภาษาจาวา สามารถแบ่งออกได้เป็น 3 ประเภทหลักๆตามหน้าที่การใช้งาน ดังนี้ 1) Instance method 2) Static method 3) Constructor method
  • 15. 5.1 Instance Method Instance method คือเมธอดที่กระทากับตัว object โดยตรง ดังเช่นใน ตัวอย่างที่ 1 setDate ถือเป็น instance method เพราะว่า setDate จะกระทากับ object ที่เรียกใช้มันเท่านั้น จากตัวอย่างที่ 2 จะเห็นได้ว่า การจะเรียกใช้งานเมธอด setDate นั้น เราจะต้องทาการสร้าง object (ในที่นี้คือ date) ขึ้นมาก่อน แล้วเรียกใช้ผ่าน object นั้น (บรรทัดที่ 3 และ 4) เราสามารถใช้คีย์เวิร์ด this เพื่อเรียกถึง object ที่ทาการเรียกใช้เมธอดนั้นๆได้ตัวอย่างเช่น
  • 16. เราสามารถใช้คีย์เวิร์ด this เพื่อเรียกถึง object ที่ทาการเรียกใช้เมธอดนั้นๆได้ตัวอย่างเช่น จากตัวอย่างที่ 6 ในเมธอด setDate มี parameter 3 ตัว ได้แก่ day, month และ year ซึ่งจะเห็นว่าหากเราเขียนว่า day = day; อาจจะทาให้โปรแกรมทางานผิดพลาดได้ เพราะว่า day ทั้งสองตัวนั้นอ้างถึงตัวแปรเดียวกันที่เป็น parameter ของเมธอด การที่เราจะ อ้างอิงถึง day ที่เป็น instance variable นั้น ทาได้โดยใช้ this.day แทน ซึ่ง this จะมี ค่าเท่ากับตัว object ที่เรียกใช้อย่างไรก็ตาม ไม่แนะนาให้ตั้งชื่อ parameter ให้เหมือนกับ ชื่อ instance variable เพราะอาจจะทาให้สับสนได้ดังนั้น ควรจะตั้งชื่อ parameter ให้ ต่างจากชื่อ attribute ดังเช่นตัวอย่างที่ 1
  • 17. 5.2 Static Method Static method (หรือเรียกอีกชื่อหนึ่งว่า class method) คือเมธอดที่มี พฤติกรรมที่ไม่ขึ้นอยู่กับ object ใดๆ ตัวอย่างเช่น เมธอด abs สาหรับหาค่าสัมบูรณ์นั้น ควรจะ มีพฤติกรรมที่ไม่ขึ้นอยู่กับ object ที่จะทาการเรียกใช้แต่ขึ้นอยู่กับ argument ของเมธอด เท่านั้น นอกจากนี้ ผู้ใช้ควรจะสามารถเรียกใช้เมธอด abs ได้โดยไม่ต้องทาการสร้าง object ขึ้นมาใหม่ วิธีการทาเช่นนี้ในภาษาจาวาทาได้โดยใส่คีย์เวิร์ด static ไว้หน้าชื่อของเมธอด (แต่อยู่ หลังจาก access modifier) ดังตัวอย่างต่อไปนี้
  • 18. การเรียกใช้งาน static method นั้น เราสามารถเรียกใช้งานผ่านชื่อคลาสได้โดยตรงโดยไม่ ต้องมีการสร้าง object ขึ้นมาก่อน ดังตัวอย่างที่ 8 ข้อควรระวังสาหรับการใช้งาน static method ก็คือ เราไม่สามารถเรียกใช้งาน instance variable หรือ instance method จากภายใน static method ได้แต่ยังเราสามารถ เรียกใช้งาน static variable หรือ static method อื่นๆได้อยู่
  • 19. 5.3 Constructor Method Constructor method เป็นเมธอดที่มีลักษณะพิเศษ คือมีชื่อเหมือนกับชื่อคลาส และไม่มีการกาหนดชนิดของข้อมูลที่ถูกส่งกลับ(return type) โดย constructor จะถูก เรียกใช้เมื่อมีการใช้คาสั่ง new ดังเช่นบรรทัดที่ 3 ของตัวอย่างที่ 2 ทั้งนี้หน้าที่ของ constructor คือกาหนดค่าเริ่มต้นให้กับ attribute ของ object ที่ถูกสร้างขึ้นมา การประกาศ constructor สามารถทาได้เหมือนกับเมธอดอื่นๆ ตัวอย่างเช่น
  • 20. ตัวอย่างที่ 9 คลาส Date ประกอบด้วย constructor สองตัว คือบรรทัดที่ 4 – 8 ซึ่งเป็น constructor ที่ไม่มีการรับค่า parameter และบรรทัดที่ 10 – 14 ซึ่งมีการรับค่า parameter เป็น int 3 ตัว (การที่เรามีเมธอดที่มีชื่อเหมือนกันมากกว่าหนึ่งเมธอด จะเรียกว่า method overloading ซึ่งรายละเอียดจะกล่าวในหัวข้อที่ 6) หากเราสร้างคลาสโดยไม่สร้าง constructor ขึ้นมาเอง (ดังเช่นตัวอย่างที่ 1) จาวาจะทาการ สร้าง default constructor ที่ไม่มีการรับค่า parameter แล้วกาหนดค่า instance variable ให้เป็นค่าตาม default value ให้โดยอัตโนมัติ อย่างไรก็ตาม หากเราสร้าง constructor ขึ้นมาเองอย่างน้อยหนึ่งตัว จาวาจะไม่สร้าง default construct ให้กับเรา และถ้าเราต้องการใช้ constructor ที่ไม่รับค่า argument เราจะต้องสร้างขึ้นมาเอง ตัวอย่างเช่น
  • 22. 6. Method Overloading Method overloading คือการที่เมธอดมากกว่าหนึ่งตัวที่อยู่ภายในคลาสเดียวกัน มีชื่อเหมือนกัน (เช่น จากตัวอย่างที่ 9 มี constructor ที่ชื่อว่า Date เหมือนกันสองตัว) Method overloading สามารถทาได้ถ้าหากว่ามีอย่างน้อยหนึ่งข้อต่อไปนี้เป็น จริง (1) จานวน parameter ของเมธอดที่จะ overload นั้นไม่เท่ากัน (2) ชนิดข้อมูลของ parameter นั้นต่างกันอย่างน้อยหนึ่งตัว
  • 23. จากตัวอย่างที่ 11 จะสังเกตเห็นว่า คลาส Date ในที่นี้มีเมธอด add ทั้งหมด 3 เมธอด ซึ่งเมธอดทั้งหมดผ่านเงื่อนไขในข้อ (1) หรือ (2)
  • 24. ข้อควรระวัง: เราไม่สามารถ overload เมธอดโดยใช้ return type ได้ตัวอย่างเช่น ซึ่งจะให้ผลลัพธ์ error
  • 25. 7. ตัวอย่างเมธอดสาเร็จรูปในภาษาจาวา ภาษาจาวานั้น ได้สร้างเมธอดสาเร็จรูปบางส่วนมาให้แล้ว โดยที่เราสามารถเรียกใช้งาน ได้เลย ตัวอย่างเช่น เมธอดที่เกี่ยวกับการประมวลผลเกี่ยวกับตัวเลข จะอยู่ในคลาส Math หรือ เมธ อดที่เกี่ยวกับการจัดการกับ string จะอยู่ในคลาส String ตัวอย่างของเมธอดสาเร็จรูปที่น่าสนใจมีดังนี้
  • 26. เมธอดเหล่านี้เป็น static method เราจึงสามารถเรียกใช้งานเมธอดเหล่านี้ได้โดยคาสั่ง Math.method_name(parameters)
  • 28. เมธอดเหล่านี้เป็น instance method เวลาจะเรียกใช้เราต้องเรียกใช้ผ่าน object ตัวอย่างเช่น "abc".length(); หรือ String s = "This is a sample string"; boolean flag = s.contains("sample"); หมายเหตุ: เมธอด concat, toLowerCase, toUppercase จะไม่ทาการเปลี่ยนค่าของ ตัว string ที่เรียกใช้โดยตรง แต่จะ return ค่าของ string อันใหม่ที่เป็นผลลัพธ์ของเมธอด แทน ดังนั้น หากเราต้องการเปลี่ยนค่าของตัวแปรต้นฉบับโดยเมธอด concat, toLowerCase, toUppercase, etc. เราจะต้องมีการกาหนดค่าให้กับมันเอง เช่น s = s.concat("abc"); s = s.toLowerCase(); s = s.toUpperCase();
  • 29. จัดทาโดย นางสาวกาญจนา ถึกจรูญ เลขที่21 นางสาวขวัญจิรา โพธิ์ล้อม เลขที่28 นางสาวจิดาภา บารุงวงศ์ เลขที่ 29 นางสาวณัฐฐา ศรีอินทร์ เลขที่ 30 นางสาวพิมพ์ลภัส กลมทุกสิ่ง เลขที่ 31 นางสาวสิริลักษณ์ วุฒิมงคลกุล เลขที่32 นางสาวเกสรา วัจนะ เลขที่ 38 ชั้น มัธยมศึกษาปีที่ 6/2 เสนอ คุณครู ทรงศักดิ์ โพธิ์เอี่ยม