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

What's hot

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น2
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น2คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น2
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น2
Iam Champooh
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
T'tle Tanwarat
 
6.Flow control
6.Flow control6.Flow control
6.Flow control
UsableLabs
 
Java-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java ProgrammingJava-Chapter 01 Introduction to Java Programming
Java-Chapter 01 Introduction to Java Programming
Wongyos Keardsri
 
Java-Chapter 06 File Operations
Java-Chapter 06 File OperationsJava-Chapter 06 File Operations
Java-Chapter 06 File Operations
Wongyos Keardsri
 
5.Methods cs
5.Methods cs5.Methods cs
5.Methods cs
UsableLabs
 
4.Oop
4.Oop4.Oop
4.Oop
UsableLabs
 
Java-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional ArraysJava-Chapter 07 One Dimensional Arrays
Java-Chapter 07 One Dimensional Arrays
Wongyos Keardsri
 
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
ตัวแปรชุดและตัวแปรกลุ่มอิสระตัวแปรชุดและตัวแปรกลุ่มอิสระ
ตัวแปรชุดและตัวแปรกลุ่มอิสระ
Lacus Methini
 
3.Expression
3.Expression3.Expression
3.Expression
UsableLabs
 
Method
MethodMethod
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
IMC Institute
 
Vb6 5 ข้อมูลและตัวแปร
Vb6 5 ข้อมูลและตัวแปร Vb6 5 ข้อมูลและตัวแปร
Vb6 5 ข้อมูลและตัวแปร
ณัฐพล บัวพันธ์
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
prapassonmook
 
8.Inheritance
8.Inheritance8.Inheritance
8.Inheritance
UsableLabs
 
Java Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่นJava Programming: อะเรย์และคอลเล็กชั่น
Java Programming: อะเรย์และคอลเล็กชั่น
Thanachart Numnonda
 
Sheet4
Sheet4Sheet4
Sheet4
5414122138
 

What's hot (20)

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

Similar to METHODS

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
Parn Nichakorn
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
Mittapan Chantanyakan
 
ภาษา C#
ภาษา C#ภาษา C#
ภาษา C#
ictyangtalad
 
งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5
Boss'Thanasit Tassana
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
Saranyu Srisrontong
 
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
Naphamas
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
Mook Prapasson
 
เมธอด กลุ่ม3
เมธอด กลุ่ม3 เมธอด กลุ่ม3
เมธอด กลุ่ม3
Piyada Petchalee
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
Finian Nian
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
Ploy StopDark
 
งานคอม#2
งานคอม#2งานคอม#2
งานคอม#2
Worapod Khomkham
 
ชนิดของข้อมูลและตัวแปร
ชนิดของข้อมูลและตัวแปรชนิดของข้อมูลและตัวแปร
ชนิดของข้อมูลและตัวแปร
ณัฐพล บัวพันธ์
 
Presentation 5
Presentation 5Presentation 5
Presentation 5
safdswqe
 
Presentation 5
Presentation 5Presentation 5
Presentation 5
kitkit1974
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
Little Tukta Lita
 

Similar to METHODS (20)

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
Chapter3
Chapter3Chapter3
Chapter3
 
66
6666
66
 
ภาษา C#
ภาษา C#ภาษา C#
ภาษา C#
 
งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5งานกลุ่มคอมกลุ่ม5
งานกลุ่มคอมกลุ่ม5
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
 
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริงบทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
บทที่5 ข้อมูลชนิดอาร์เรย์และสตริง
 
4
44
4
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
เมธอด กลุ่ม3
เมธอด กลุ่ม3 เมธอด กลุ่ม3
เมธอด กลุ่ม3
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
งานทำBlog บทที่ 10
งานทำBlog บทที่ 10งานทำBlog บทที่ 10
งานทำBlog บทที่ 10
 
งานนำเสนอ1
งานนำเสนอ1งานนำเสนอ1
งานนำเสนอ1
 
งานคอม#2
งานคอม#2งานคอม#2
งานคอม#2
 
ชนิดของข้อมูลและตัวแปร
ชนิดของข้อมูลและตัวแปรชนิดของข้อมูลและตัวแปร
ชนิดของข้อมูลและตัวแปร
 
Presentation 5
Presentation 5Presentation 5
Presentation 5
 
Presentation 5
Presentation 5Presentation 5
Presentation 5
 
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
ฟังก์ชั่นย่อยและโปรแกรมมาตรฐาน ม.6.1
 

More from kessara61977

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

More from kessara61977 (20)

Is3sharinglove
Is3sharingloveIs3sharinglove
Is3sharinglove
 
โครงการปันรัก
โครงการปันรักโครงการปันรัก
โครงการปันรัก
 
It news sutida
It news sutidaIt news sutida
It news sutida
 
It news kessara
It news kessaraIt news kessara
It news kessara
 
It news kessara
It news kessaraIt news kessara
It news kessara
 
Is3โครงการปันรัก
Is3โครงการปันรักIs3โครงการปันรัก
Is3โครงการปันรัก
 
บทที่ 1 กลุ่มที่ 3
บทที่ 1 กลุ่มที่ 3บทที่ 1 กลุ่มที่ 3
บทที่ 1 กลุ่มที่ 3
 
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ นักเรียนชั้น ม.4-5
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของนักเรียนชั้น ม.4-5สำรวจพฤติกรรมการใช้สมาร์ทโฟนของนักเรียนชั้น ม.4-5
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ นักเรียนชั้น ม.4-5
 
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของสำรวจพฤติกรรมการใช้สมาร์ทโฟนของ
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ
 
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ ม.4-5
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ ม.4-5สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ ม.4-5
สำรวจพฤติกรรมการใช้สมาร์ทโฟนของ ม.4-5
 
สังคมก้มหน้า บท-1
สังคมก้มหน้า บท-1สังคมก้มหน้า บท-1
สังคมก้มหน้า บท-1
 
โครงงานสำรวจพฤติกรรมการใช้สมาร์ทโฟนนักเรียนชั้น ม.4-5
โครงงานสำรวจพฤติกรรมการใช้สมาร์ทโฟนนักเรียนชั้น ม.4-5โครงงานสำรวจพฤติกรรมการใช้สมาร์ทโฟนนักเรียนชั้น ม.4-5
โครงงานสำรวจพฤติกรรมการใช้สมาร์ทโฟนนักเรียนชั้น ม.4-5
 
โครงงานสำรวจ
โครงงานสำรวจโครงงานสำรวจ
โครงงานสำรวจ
 
การสำรวจพฤติกรรมการใช้สมาร์ทโฟน
การสำรวจพฤติกรรมการใช้สมาร์ทโฟนการสำรวจพฤติกรรมการใช้สมาร์ทโฟน
การสำรวจพฤติกรรมการใช้สมาร์ทโฟน
 
บทที่ 2
บทที่ 2บทที่ 2
บทที่ 2
 
โครงงาน Is2
โครงงาน Is2โครงงาน Is2
โครงงาน Is2
 
โครงงาน Is2
โครงงาน Is2โครงงาน Is2
โครงงาน Is2
 
โครงงาน Is2
โครงงาน Is2โครงงาน Is2
โครงงาน Is2
 
Internet
InternetInternet
Internet
 
กลุ่ม 4 Internet
กลุ่ม 4 Internetกลุ่ม 4 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 เสนอ คุณครู ทรงศักดิ์ โพธิ์เอี่ยม