Home / ພື້ນຖານ Java / ເມຕອດ (Method)
ເມຕອດ ເປັນກລຸ່ມຂອງຄຳສັ່ງທີ່ສ້າງຂຶ້ນມາເພື່ອເຮັດຫນ້າທີ່ບາງຢ່າງ ການສ້າງເມຕອດຈະສາມາດເຮັດໃຫ້ເຮົາໃຊ້ໂຄ້ດນັ້ນຊ້ຳໆ ໂດຍທີ່ບໍ່ຕ້ອງຂຽນໂປຣແກຣມໃໝ່
ເມື່ອສ້າງເມຕອດໃນພາສາ Java ມັນສາມາດທີ່ຈະເອີ້ນໃຊ້ງານໄດ້ຈາກສ່ວນໃດໆ ຂອງໂປຣແກຣມ ຂຶ້ນກັບຂອບເຂດ ແລະ ລະດັບການເຂົ້າເຖິງທີ່ໄດ້ກຳນົດຂຶ້ນ ໂດຍຮູບແບບໃນການສ້າງເມຕອດໃນພາສາ Java ມີດັ່ງນີ້
type name ( parameter1, parameter2, ... ) {
statements
}
access_modifier type name ( parameter1, parameter2, ... ) {
statements
}
type ເປັນປະເພດຂອງເມຕອດທີ່ຈະສ້າງຂຶ້ນ ໂດຍສາມາດເປັນໄດ້ທັງ primitive datatype ຫລື reference types ໄດ້ ແລະ ຖ້າຫາກເມຕອດບໍ່ມີການສົ່ງຄ່າກັບຈະໃຊ້ຄຳສັ່ງ void
name ເປັນຊື່ຂອງເມຕອດ ຫລື identifier ເຊິ່ງມີກົດໃນການຕັ້ງຊື່ເຊັ່ນດຽວກັນກັບຕົວແປຣ
parameters ເປັນລາຍການຂອງຕົວແປຣທີ່ຈະສົ່ງເຂົ້າໄປໃຊ້ໃນເມຕອດ ໂດຍສາມາດມີຕັ້ງແຕ່ 1 ຂຶ້ນໄປ ຫລື ບໍ່ມີ ກໍ່ໄດ້
access_modifier ເປັນການກຳນົດລະດັບການເຂົ້າເຖິງຂອງເມຕອດ ເຊິ່ງຈະຢູ່ໃນເລື່ອງຂອງອອບເຈັກ ໂດຍມີ 4 ຮູບແບບຄື private protected public ແລະ default
public class CreateMethod {
public static void main(String[] args) {
sayWelcome();
int x = 2;
int y = 3;
System.out.println("x + y = " + sum(x, y));
System.out.println("10 + 20 = " + sum(10, 20));
}
private static void sayWelcome () {
System.out.println("Welcome to Calculator Program");
}
private static int sum (int a, int b) {
return a + b;
}
}
ໃນຕົວຢ່າງ ເຮົາສ້າງເມຕອດຂຶ້ນມາສອງເມຕອດ ເມຕອດທຳອິດມີຊື່ວ່າ sayWelcome() ເຮົາໄດ້ອີ້ນໃຊ້ງານເພື່ອໃຫ້ສະແດງຂໍ້ຄວາມເມື່ອເຂົ້າສູ່ໂປຣແກຣມ ແລະ ເມຕອດ sum() ເປັນເມຕອດສຳລັບຄ່າຫາຜົນທັງຫມົດຂອງຕົວເລກສອງຈຳນວນ
ໝາຍເຫດ: ຄຳສັ່ງ static ຄືຄຳສັ່ງທີ່ເຮັດໃຫ້ເມຕອດ ຫລື ຕົວແປຣໃດໆກໍ່ຕາມ ເປັນຕົວແປຣທີ່ສາມາດໃຊ້ຮ່ວມກັນພາຍໃນໂປຣແກຣມໄດ້ ໃນການເອີ້ນໃຊ້ງານ static ເມຕອດ ເມຕອດທີ່ຮຽກຕ້ອງເປັນ static ເຊັ່ນດຽວກັນ ຍົກເວັ້ນການຮຽກໃຊ້ແບບ Class prefix ເຊິ່ງເຮົາຈະໄດ້ຮຽນໃນບົດຂອງອອບເຈັກ
ໃນການຮຽກໃຊ້ເມຕອດໃນພາສາ Java ໃຊ້ຊື່ຂອງມັນຕາມດ້ວຍວົງເລັບ () ແລ້ວໃສ່ອາກິວເມນຕ໌ຕາມລຳດັບໃນລາຍການຂອງພາຣາມິເຕີຂອງເມຕອດ ເຮົາໄດ້ຮຽກໃຊ້ເມຕອດ sum() ສອງເທື່ອໂດຍບໍ່ຕ້ອງຂຽນໂປຣແກຣມການບວກເລກໃໝ່ ເຊິ່ງນີ້ເອງຄືການນຳກັບມາໃຊ້ໃໝ່ຂອງເມຕອດ
Welcome to Calculator Program
x + y = 5
10 + 20 = 30
ໃນການສົ່ງຄ່າແລະຮັບຄ່າພາຍໃນເມຕອດ ນັ້ນອາກິວເມນຕ໌ຄືຕົວແປຣທີ່ສົ່ງໄປຢັງເມຕອດໃນຕອນຮຽກໃຊ້ງານ ເຊັ່ນ sum(a, b) ເຮົາຮຽກຕົວແປຣ a ແລະ b ອາກິວເມນຕ໌ ພາຣາມິເຕອຣ໌ເປັນຕົວແປຣພາຍໃນເມຕອດໃນການປະກາດ ເພື່ອທີ່ຈະຮັບຄ່າຈາກອາກິວເມນຕ໌ທີ່ສົ່ງເຂົ້າມາ
import java.util.Scanner;
public class MethodParameters {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
// call method
open ();
System.out.print("Enter music name to play: ");
play(reader.nextLine()); // call method with 1 argument
System.out.println("Where do you want to seek music to?");
int min, sec;
System.out.print("Enter minute: ");
min = reader.nextInt();
System.out.print("Enter second: ");
sec = reader.nextInt();
seekTo(sec, min); // call method with 2 arguments
}
// no parameter method
public static void open () {
System.out.println("Music player started.");
}
// method with one parameter
public static void play (String name) {
System.out.println("Playing your music \" " + name + "\"");
}
// method with two parameters
public static void seekTo (int sec, int min) {
System.out.println("Seek music to " + min + ":" + sec);
}
}
ເປັນໂປຣແກຣມຫລິ້ນເພງ ໂດຍໂປຣແກຣມຈະໃຫ້ຜູ້ໃຊ້ ປ້ອນຊື່ຂອງເພງທີ່ຕ້ອງການຈະຫລິ້ນ ແລ້ວສາມາດເລື່ອນຕຳແໜ່ງເພງໄປທີ່ເວລາຕ່າງໆໄດ້
ໝາຍເຫດ: ເຮົາມີ 3 ເມຕອດ ຄື ເມຕອດ open() ໃຊ້ສຳລັບສະແດງຂໍ້ຄວາມວ່າເປີດເຄື່ອງຫລິ້ນເພລງແລ້ວ ໃນເມຕອດນີ້ມີພາຣາມິເຕອຣ໌ play() ສຳລັບໃສ່ຊື່ເພລງທີ່ຕ້ອງການຫລິ້ນ ແລະ ໂປຣແກຣມຈະຫລິ້ນເພລງ ມີໜຶ່ງພາຣາມິເຕອຣ໌ ແລະ ສຸດທ້າຍເປັນເມຕອດ seekTo() ເພື່ອເລື່ອນເພລງໄປຫາເວລາຕ່າງໆ ເມຕອດນີ້ມີສອງພາຣາມິເຕອຣ໌ ໃນການຮຽກໃຊ້ນັ້ນກໍ່ສົ່ງອາກິວເມນຕ໌ໄປຕາມພາຣາມິເຕີຣຂອງເມຕອດທີ່ເຮົາຮຽກໃຊ້ນັ້ນເອງ
Music player started.
Enter music name to play: Golden Wings
Playing your music " Golden Wings"
Where do you want to seek music to?
Enter minute: 2
Enter second: 50
Seek music to 2:50
ຈາກຕົວຢ່າງເມື່ອຣັນໂປຣແກຣມ ແລະ ໃສ່ຊື່ເພລງເປັນ "Golden Wings" ແລະ ເວລາເປັນ 2 ນາທີແລະ 50 ວິນາທີ ເຮົາຈະເຫັນວ່າເມຕອດໃນຕົວຢ່າງທັງໝົດເປັນເມຕອດທີ່ບໍ່ມີການສົ່ງຄ່າກລັບ ເຮົາຈະໃຊ້ຄຳສັ່ງ void ສຳລັບປະເພດຂອງມັນ
ນອກຈາກນີ້ ເມຕອດຍັງສາມາດສົ່ງຄ່າກັບໄປທີ່ທີ່ມັນຖືກຮຽກໄດ້ ໂດຍການໃຊ້ຄຳສັ່ງ return ຄຳສັ່ງສຸດທ້າຍໃນເມຕອດ ເປັນການ return ໝາຍເຖິງການສີ້ນສຸດການເຮັດວຽກງານຂອງເມຕອດ ແລະ ໂປຣແກຣມຈະໄປເຮັດວຽກຕໍ່ຈາກທີ່ມັນຖືກຮຽກ
public class MethodReturn {
public static void main(String[] args) {
float pi = getPI();
System.out.println("Value of PI is " + pi);
System.out.println("\nDetemine if the number is or not");
for (int i = 1; i <= 20; i++) {
if (isPrime(i)) {
System.out.println(i + " is prime");
} else {
System.out.println(i + " is not prime");
}
}
}
public static float getPI () {
return 3.14f;
}
public static boolean isPrime(int number) {
for (int i = 2; i < number; i++) {
if (number % i == 0 && i != number) return false;
}
return true;
}
}
ຕົວຢ່າງເປັນການໃຊ້ຄຳສັ່ງ return ເຮົາມີສອງເມຕອດຄື getPI() ໃຊ້ສຳລັບຮັບຄ່າ PI ມາ ດັ່ງນັ້ນປະເພດຂອງຟັງກ໌ຊັ່ນຈະເປັນ float ເພຣາະເຮົາຕ້ອງການສົ່ງຄ່າຂອງ floating-point ກລັບໄປ
ຕໍ່ມາເປັນເມຕອດ isPrime() ເປັນເມຕອດສຳລັບກວດສອບຕົວເລກຈຳນວນສະເພາະ ໂດຍຄ່າທີ່ສົ່ງກລັບເປັນ boolean ເຊິ່ງເປັນ true ຖ້າຫາກເປັນຈຳນວນສະເພາະແລະ false ຖ້າບໍ່ເປັນ ເຮົາເຫັນວ່າເຮົາສາມາດຮຽກໃຊ້ເມຕອດນີ້ເຖິງ 20 ເທື່ອ ເຊິ່ງເຮົາໄດ້ໃຊ້ໂຄ້ດເດີມໂດຍບໍ່ຕ້ອງຂຽນຂຶ້ນໃໝ່ສະເໝີ
Value of PI is 3.14
Detemine if the number is or not
1 is prime
2 is prime
3 is prime
4 is not prime
5 is prime
6 is not prime
7 is prime
8 is not prime
9 is not prime
10 is not prime
11 is prime
12 is not prime
13 is prime
14 is not prime
15 is not prime
16 is not prime
17 is prime
18 is not prime
19 is prime
20 is not prime
ໃນການສົ່ງຂໍ້ມູນແບບອາເຣເຂົ້າໄປໃນເມຕອດ ເຮັດໄດ້ເຊັ່ນດຽວກັນກັບຕົວແປຣ ເຮົາສາມາດສົ່ງອາເຣ 1 ມິຕິ ຫລື ຫຼາຍມິຕິໄປຢັງເມຕອດຄືກັນ
import java.util.Arrays;
public class MethodArrays {
public static void main(String[] args) {
int[] number = {3, 2, 9, 5, 8, 10, 1};
System.out.println("Array: " + Arrays.toString(number));
System.out.println("Sorted: " + Arrays.toString(sort(number)));
}
public static int[] sort (int[] arr) {
int length = arr.length;
for (int i = 0; i < length - 1; i++) {
for (int j = 1; j < length - i; j++) {
if (arr[j - 1] > arr[j]) {
int temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
}
ໝາຍເຫດ: ຂ້າງເທິງເປັນຕົວຢ່າງການສົ່ງອາເຣເຂົ້າໄປຢັງເມຕອດ ແລະ return ອາເຣຢົ໌ກັບມາເຊັ່ນເດີມ ໂດຍເມຕອດ sort ນັ້ນເປັນເມຕອດໃນການລຽງຕົວເລກໃນອາເຣຈາກຫຼາຍໄປຫານ້ອຍດ້ວຍອັນກໍ່ຣິທຶມ Bubble sort
ເຮົາຢັງຮຽກໃຊ້ເມຕອດ toString() static method ພາຍໃນຄາດ Arrays ເພື່ອແປລງອາເຣໃຫ້ເປັນ String ສຳລັບການສະແດງຜົນຂໍ້ມູນໃນອາເຣ
Overloading Method ເປັນຄວາມສາມາດໜຶ່ງໃນພາສາ Java ທີ່ສາມາດສ້າງເມຕອດໂດຍການໃຊ້ຊື່ດຽວກັນໄດ້ ແຕ່ສິ່ງທີ່ແຕກຕ່າງກັນຄືຈຳນວນພາຣາມິເຕີຂອງມັນ ໃນການເຮັດວຽກຂອງໂປຣແກຣມຈະເຮັດວຽກ ຖ້າຫາກປະເພດຂອງພາຣາມິເຕອຣ໌ແລະ ລໍາດັບຂອງມັນກົງກັນ
ໃນເມຕອດທີ່ມາກັບໄລບາຣີ່ຂອງພາສາ Java ນັ້ນມີ Overloading Method ຫລວງຫຼາຍໃຫ້ເຮົາໃຊ້ ແລະ ເຮົາໄດ້ໃຊ້ໄປແລ້ວ ເຊັ່ນ ເມຕອດ print() ແລະ println() ນັ້ນຕ່າງກໍ່ເປັນ Overload Method ເຮົາສາມາດສົ່ງຂໍ້ມູນປະເພດຕ່າງໆ ເພື່ອໄປສະແດງຜົນໄດ້ ເຊັ່ນ int, float ຫລື String ເປັນຕົ້ນ
public class OverloadingMethod {
public static void main(String[] args) {
hello(3);
hello("Marcus");
hello("Alice", "Emma");
}
public static void hello (int n) {
System.out.println("Hello " + n + ", you're a number");
}
public static void hello (String name) {
System.out.println("Hi " + name);
}
public static void hello (String name, String name2) {
System.out.println("Hello " + name + ", Hi " + name2);
}
}
ໃນຕົວຢ່າງເປັນການ Overloading Method ໂດຍເຮົາມີເມຕອດທີ່ຊື່ວ່າ hello() ມັນຈະເຮັດການທັກທາຍເມື່ອສົ່ງຂໍ້ມູນເຂົ້າໄປ ໂດຍມັນຈະແຍກອອກຈາກປະເພດຂອງພາຣາມິເຕອຣ໌ ແລະ ລຳດັບຂອງພາຣາມິເຕີທີ່ສົ່ງເຂົ້າໄປ ເຮົາຈະເຫັນວ່າເຮົາສາມາດໃຊ້ຊື່ດຽວໃນການສ້າງເມຕອດໄດ້ ໂດຍທີ່ບໍ່ຕ້ອງສ້າງແຍກສຳລັບຂໍ້ມູນແຕ່ລະປະເພດ ແລະ ຈໍານວນພາຣາມິເຕີອີກຕໍ່ໄປ
Hello 3, you're a number
Hi Marcus
Hello Alice, Hi Emma
ໝາຍເຫດ: ເມຕອດນັ້ນເປັນຈໍາເປັນຫຼາຍໃນການຂຽນໂປຣແກຣມ ແລະ ການຂຽນໂປຣແກຣມເຊີງວັດຖຸ ໃນຕອນນີ້ເຮົາເຂົ້າໃຈພື້ນຖານຂອງພາສາແລ້ວ ໃນບົດຕໍ່ໄປເຮົາຈະໄດ້ຮຽນການຂຽນໂປຣແກຣມແບບວັດຖຸໃນພາສາ Java ເຊິ່ງຖືວ່າເປັນເລື່ອງຫຼັກທີ່ສຳຄັນທີ່ສຸດຂອງບົດຮຽນນີ້