การเขียนโปรแกรม Java Functions (Methods)
Java Functions (Methods)
ในภาษา Java ต้องสร้าง Functions ไว้ใน class และภาษา java เราเรียกว่า Methods มาดูตัวอย่างกัน
test คือชื่อของ method นี้ ซึ่งอยู่ในคลาส Main
public class Main { public static void test() { // โค้ดโปรแกรม } }
test คือชื่อของ method นี้ ซึ่งอยู่ในคลาส Main
Arguments
method ของภาษา Java จะส่งค่าเป็น passed by value หมายถึง การ copies ค่าเมื่อ method ทำงาน ตัวอย่าง
public void bar(int num1, int num2) { ... }
ยกตัวอย่างเมื่อมีการเรียกใช้ method bar
int a = 3; int b = 5; bar(a, b);
เมื่อ method ทำงาน
bar(a, b)
จะส่งค่า a=3, b=5 ไปใน method ซึ่งจะเปรียบเสมือนint num1 = a; int num2 = b;
หรือ
public void bar(int num1 = a, int num2 = b) { ... }
หมายถึง ค่า a จะคัดลอกไปสู่ num1 และค่า b คัดลอกไปสู่ num2 เรียงตามลำดับโดยไม่กระทบค่า a , b
จากนั้นก็จะทำส่วนที่เหลือของ method
แล้วถ้า arguments เป็น object บ้าง การทำงานก็คล้ายๆ กัน ต่างกันนิดเดียวเท่านั้น ตัวอย่าง
public void bar2(Student s1, Student s2) { ... }
มี method อยู่ 2 ตัวคือ joe , jack และเรียกใช้ method bar2 พร้อมส่งค่าไป
Student joe = new Student("joe"); Student jack = new Student("jack");
bar2(joe, jack);
แล้วการส่งค่าก็จะเปรียบเสมือนการ copy ค่า (pass by value)
Student s1 = joe; Student s2 = jack;
แต่ถ้าเป็น object จะต่างกันนิดหนึ่งตรงที่ object
s1
กับ joe
มีตำแหน่งอ้างอิงเดียวกันทำให้ s1 == joe
เป็น true หมายความว่าเมื่อเปลียนค่า s1 joe ก็จะถูกกระทบคือเปลี่ยนตาม แต่ถ้าสร้าง s1 ในตำแหน่งอื่น ก็จะไม่กระทบกับ joes1.setName("Chuck"); // เปลี่ยน s1 ให้เป็น Chuck ทำให้ตอนนี้ joe เปลี่ยนเป็น Chuck ตามไปด้วย s1 = new Student("Norris"); // s1 ถูกสร้างขึ้นใหม่ชื่อ Norris อ้างอิงตำแหน่งใหม่ทำให้ต่างจาก joe // s1 == joe ทำให้ไม่ true อีกต่อไป
Non static methods
non static methods ในภาษา Java ถูกใช้มากกว่า static method ซึ่ง non static methods จะทำงานภายใต้ object เท่านั้น ไม่ทำงานใน class
non static methods สามารถเรียกใช้และเปลี่ยนค่าใน object
public class Student { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
การเรียกใช้ method จะเรียกผ่าน object ชนิด student
Student s = new Student(); s.setName("Danielle"); String name = s.getName(); Student.setName("Bob"); // ทำไม่ได้ Student.getName(); // ทำไม่ได้
สรุป
ทุก methods ในภาษา Java ต้องทำงานใน Class
Static method เป็นสมาชิกของ class ในขณะที่ non static method เป็นสามาชิกของ objects
การส่งค่าของทุก method จะส่่งแบบ passed by value ขณะที่ object จะส่งแบบ passed by reference
แบบฝึกหัด
เขียน method ชื่อ printFullName ของนักเรียนซึ่งแสดงชื่อนามสกุลนักเรียน
class Student { private String firstName; private String lastName; public Student(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } // พิมพ์ code ของคุณตรงนี้ } public class Main { public static void main(String[] args) { Student[] students = new Student[] { new Student("Morgan", "Freeman"), new Student("Brad", "Pitt"), new Student("Kevin", "Spacey"), }; for (Student s : students) { s.printFullName(); } } }
class Student {
private String firstName;
private String lastName;
public Student(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public void printFullName(){
System.out.println(firstName+" " +lastName);
}
}
public class Main {
public static void main(String[] args) {
Student[] students = new Student[] {
new Student("Morgan", "Freeman"),
new Student("Brad", "Pitt"),
new Student("Kevin", "Spacey"),
};
for (Student s : students) {
s.printFullName();
}
}
}