Thứ Ba, 21 tháng 8, 2018

Java - Phương pháp

Một phương thức trong Học lập trình Java là một tập hợp các câu lệnh được nhóm lại với nhau để thực hiện một thao tác. Khi bạn gọi System.out. println () phương pháp, ví dụ, hệ thống thực sự thực hiện một số báo cáo để hiển thị một thông báo trên bàn điều khiển.

Bây giờ bạn sẽ học cách tạo các phương thức của riêng bạn có hoặc không có các giá trị trả về, gọi một phương thức có hoặc không có các tham số và áp dụng phương thức trừu tượng trong thiết kế chương trình.

Phương thức tạo

Xem xét ví dụ sau để giải thích cú pháp của một phương thức

Cú pháp

public static int methodName(int a, int b) {
   // body
}

Đây

công cụ sửa đổi tĩnh công cộng

kiểu int - return

methodName - tên của phương thức

a, b - thông số chính thức

int a, int b - danh sách các tham số

Định nghĩa phương thức bao gồm tiêu đề phương thức và phần thân phương thức. Điều tương tự được thể hiện trong cú pháp sau

Cú pháp

modifier returnType nameOfMethod (Parameter List) {
   // method body

}

Cú pháp được hiển thị ở trên bao gồm

modifier - Nó định nghĩa kiểu truy cập của phương thức và nó là tùy chọn để sử dụng.

returnType - Phương thức có thể trả về một giá trị.

nameOfMethod - Đây là tên phương thức. Chữ ký phương thức bao gồm tên phương thức và danh sách tham số.

Parameter List - Danh sách các tham số, nó là kiểu, thứ tự và số tham số của một phương thức. Đây là tùy chọn, phương thức có thể chứa các tham số bằng không.

phương thức body - Phần thân phương thức định nghĩa phương thức thực hiện với các câu lệnh.

Thí dụ

Đây là mã nguồn của phương thức được định nghĩa ở trên được gọi là min () . Phương thức này lấy hai tham số num1 và num2 và trả về giá trị tối đa giữa hai tham số
/** the snippet returns the minimum between two numbers */

public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

Gọi phương thức

Để sử dụng một phương thức, nó nên được gọi. Có hai cách trong đó một phương thức được gọi là tức là, phương thức trả về một giá trị hoặc trả về không có gì (không có giá trị trả về).




Quá trình gọi phương thức rất đơn giản. Khi một chương trình gọi một phương thức, điều khiển chương trình sẽ được chuyển sang phương thức được gọi. Phương thức này được gọi là sau đó trả về điều khiển cho người gọi trong hai điều kiện, khi -

câu lệnh return được thực hiện.

nó đạt đến phương pháp kết thúc cú đúp đóng.

Các phương thức trả về void được coi là lời gọi đến một câu lệnh. Hãy xem xét một ví dụ -
System.out.println("This is tutorialspoint.com!");
Giá trị trả về của phương thức có thể được hiểu bởi ví dụ sau:
int result = sum(6, 9);
Sau đây là ví dụ minh họa cách xác định phương thức và cách gọi nó

Thí dụ
public class ExampleMinNumber {
   
   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Minimum value = 6

Từ khóa void

Từ khóa void cho phép chúng ta tạo ra các phương thức không trả về một giá trị. Ở đây, trong ví dụ sau, chúng tôi đang xem xét một phương thức voidRankPoints . Phương thức này là một phương thức void, không trả về bất kỳ giá trị nào. Gọi đến một phương thức void phải là một câu lệnh ieRankPoints (255.7); . Nó là một câu lệnh Java kết thúc bằng một dấu chấm phẩy như trong ví dụ sau.

Thí dụ
public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }else {
         System.out.println("Rank:A3");
      }
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Rank:A1

Truyền tham số theo giá trị

Trong khi làm việc theo quá trình gọi điện, các đối số sẽ được thông qua. Những thứ này phải theo thứ tự giống như các tham số tương ứng của chúng trong đặc tả phương thức. Các tham số có thể được truyền theo giá trị hoặc tham chiếu.

Truyền tham số theo Giá trị nghĩa là gọi phương thức có tham số. Thông qua điều này, giá trị đối số được truyền cho tham số.

Thí dụ

Chương trình sau đây cho thấy một ví dụ về tham số truyền theo giá trị. Các giá trị của các đối số vẫn giữ nguyên ngay cả sau khi gọi phương thức.
public class swappingExample {

   public static void main(String[] args) {
      int a = 30;
      int b = 45;
      System.out.println("Before swapping, a = " + a + " and b = " + b);

      // Invoke the swap method
      swapFunction(a, b);
      System.out.println("\n**Now, Before and After swapping values will be same here**:");
      System.out.println("After swapping, a = " + a + " and b is " + b);
   }

   public static void swapFunction(int a, int b) {
      System.out.println("Before swapping(Inside), a = " + a + " b = " + b);
      
      // Swap n1 with n2
      int c = a;
      a = b;
      b = c;
      System.out.println("After swapping(Inside), a = " + a + " b = " + b);
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Before swapping, a = 30 and b = 45
Before swapping(Inside), a = 30 b = 45
After swapping(Inside), a = 45 b = 30

**Now, Before and After swapping values will be same here**:
After swapping, a = 30 and b is 45

Phương pháp quá tải

Khi một lớp có hai hoặc nhiều phương thức có cùng tên nhưng các tham số khác nhau, nó được gọi là quá tải phương thức. Nó khác với trọng số. Trong ghi đè, phương thức có cùng tên phương thức, loại, số tham số, v.v.

Hãy xem xét ví dụ đã thảo luận ở trên để tìm số lượng tối thiểu của kiểu số nguyên. Nếu, giả sử chúng ta muốn tìm số lượng tối thiểu của loại kép. Sau đó, khái niệm về quá tải sẽ được giới thiệu để tạo ra hai hoặc nhiều phương thức có cùng tên nhưng các tham số khác nhau.

Ví dụ sau giải thích tương tự

Thí dụ
public class ExampleOverloading {

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

   // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

Minimum Value = 6
Minimum Value = 7.3

Các phương thức nạp quá tải làm cho chương trình có thể đọc được. Ở đây, hai phương thức được đưa ra bởi cùng một tên nhưng với các tham số khác nhau. Số lượng tối thiểu từ số nguyên và loại kép là kết quả.

Sử dụng đối số dòng lệnh

Đôi khi bạn sẽ muốn chuyển một số thông tin vào một chương trình khi bạn chạy nó. Điều này được thực hiện bằng cách chuyển các đối số dòng lệnh tới hàm main ().

Đối số dòng lệnh là thông tin trực tiếp theo tên của chương trình trên dòng lệnh khi nó được thực thi. Để truy cập các đối số dòng lệnh bên trong một chương trình Java khá dễ dàng. Chúng được lưu trữ dưới dạng các chuỗi trong mảng String được truyền cho hàm main ().

Thí dụ

Chương trình sau đây sẽ hiển thị tất cả các đối số dòng lệnh mà nó được gọi với -
public class CommandLine {

   public static void main(String args[]) { 
      for(int i = 0; i<args.length; i++) {
         System.out.println("args[" + i + "]: " +  args[i]);
      }
   }
}
Hãy thử thực hiện chương trình này như được hiển thị ở đây

$java CommandLine this is a command line 200 -100
Điều này sẽ tạo ra kết quả sau

Đầu ra
args[0]: this
args[1]: is
args[2]: a
args[3]: command
args[4]: line
args[5]: 200
args[6]: -100

Các nhà xây dựng

Một hàm khởi tạo một đối tượng khi nó được tạo ra. Nó có cùng tên với lớp của nó và có cú pháp tương tự như một phương thức. Tuy nhiên, các nhà xây dựng không có kiểu trả về rõ ràng.

Thông thường, bạn sẽ sử dụng một hàm tạo để cung cấp các giá trị ban đầu cho các biến cá thể được định nghĩa bởi lớp, hoặc để thực hiện bất kỳ các thủ tục khởi động nào khác cần thiết để tạo ra một đối tượng được tạo thành đầy đủ.

Tất cả các lớp đều có các hàm tạo, cho dù bạn định nghĩa một hay không, vì Java tự động cung cấp một hàm khởi tạo mặc định để khởi tạo tất cả các biến thành viên là 0. Tuy nhiên, khi bạn xác định hàm tạo của riêng bạn, hàm tạo mặc định không còn được sử dụng nữa.

Thí dụ

Đây là một ví dụ đơn giản sử dụng một hàm tạo không có tham số -
// A simple constructor.
class MyClass {
   int x;

   // Following is the constructor
   MyClass() {
      x = 10;
   }
}
Bạn sẽ phải gọi hàm khởi tạo để khởi tạo các đối tượng như sau:
public class ConsDemo {

   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
   }
}
Đầu ra

10 10

Tham số Constructor

Thông thường, bạn sẽ cần một hàm tạo chấp nhận một hoặc nhiều tham số. Các tham số được thêm vào một hàm khởi tạo giống như cách chúng được thêm vào một phương thức, chỉ cần khai báo chúng bên trong dấu ngoặc đơn sau tên của hàm tạo.

Thí dụ

Đây là một ví dụ đơn giản sử dụng một hàm tạo với một tham số -
// A simple constructor.
class MyClass {
   int x;
   
   // Following is the constructor
   MyClass(int i ) {
      x = i;
   }
}
Bạn sẽ cần gọi một hàm khởi tạo để khởi tạo các đối tượng như sau:
public class ConsDemo {

   public static void main(String args[]) {
      MyClass t1 = new MyClass( 10 );
      MyClass t2 = new MyClass( 20 );
      System.out.println(t1.x + " " + t2.x);
   }
}
Điều này sẽ tạo ra kết quả sau

Đầu ra

10 20

Từ khóa này

đây là một từ khóa trong Java được sử dụng như một tham chiếu đến đối tượng của lớp hiện tại, với một phương thức thể hiện hoặc một hàm tạo. Sử dụng điều này bạn có thể tham khảo các thành viên của một lớp như constructor, variables và methods.

Lưu ý - Từ khóa này chỉ được sử dụng trong các phương thức hoặc các hàm tạo


Nói chung, từ khóa này được sử dụng để

Phân biệt các biến cá thể từ các biến cục bộ nếu chúng có cùng tên, trong một hàm tạo hoặc một phương thức.
class Student {
   int age;   
   Student(int age) {
      this.age = age; 
   }
}
Gọi một kiểu hàm khởi tạo (constructor đã được parametrized hoặc mặc định) từ một hàm khác trong một lớp. Nó được gọi là lời gọi hàm khởi tạo rõ ràng.
class Student {
   int age
   Student() {
      this(20);
   }
   
   Student(int age) {
      this.age = age; 
   }
}

Thí dụ

Đây là một ví dụ sử dụng từ khóa này để truy cập vào các thành viên của một lớp. Sao chép và dán chương trình sau vào tệp có tên, This_Example.java .
public class This_Example {
   // Instance variable num
   int num = 10;
 
   This_Example() {
      System.out.println("This is an example program on keyword this"); 
   }

   This_Example(int num) {
      // Invoking the default constructor
      this();
      
      // Assigning the local variable num to the instance variable num
      this.num = num;    
   }
   
   public void greet() {
      System.out.println("Hi Welcome to Tutorialspoint");
   }
      
   public void print() {
      // Local variable num
      int num = 20;
      
      // Printing the local variable
      System.out.println("value of local variable num is : "+num);
      
      // Printing the instance variable
      System.out.println("value of instance variable num is : "+this.num);
      
      // Invoking the greet method of a class
      this.greet();     
   }
   
   public static void main(String[] args) {
      // Instantiating the class
      This_Example obj1 = new This_Example();
      
      // Invoking the print method
      obj1.print();
   
      // Passing a new value to the num variable through parametrized constructor
      This_Example obj2 = new This_Example(30);
      
      // Invoking the print method again
      obj2.print(); 
   }
}

Điều này sẽ tạo ra kết quả sau

Đầu ra

This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 10
Hi Welcome to Tutorialspoint
This is an example program on keyword this 
value of local variable num is : 20
value of instance variable num is : 30
Hi Welcome to Tutorialspoint

Đối số biến (var-args)

JDK 1.5 cho phép bạn chuyển một số biến số của các đối số cùng loại cho một phương thức. Tham số trong phương thức được khai báo như sau:

typeName... parameterName

Trong khai báo phương thức, bạn chỉ định kiểu tiếp theo là dấu ba chấm (...). Chỉ có một tham số chiều dài biến có thể được xác định trong một phương thức, và tham số này phải là tham số cuối cùng. Bất kỳ tham số thông thường nào đều phải đứng trước nó.

Thí dụ

public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
    printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
      if (numbers.length == 0) {
         System.out.println("No argument passed");
         return;
      }

      double result = numbers[0];

      for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

Điều này sẽ tạo ra kết quả sau

Đầu ra

The max value is 56.5
The max value is 3.0

Phương thức finalize ()

Có thể định nghĩa một phương thức sẽ được gọi ngay trước khi bộ thu gom rác hủy diệt cuối cùng của đối tượng. Phương thức này được gọi là finalize () , và nó có thể được sử dụng để đảm bảo rằng một đối tượng chấm dứt sạch sẽ.

Ví dụ, bạn có thể sử dụng finalize () để đảm bảo rằng một tập tin mở thuộc sở hữu của đối tượng đó được đóng lại.

Để thêm một finalizer vào một lớp, bạn chỉ cần định nghĩa phương thức finalize (). Thời gian chạy Java gọi phương thức đó bất cứ khi nào nó sắp tái chế một đối tượng của lớp đó.

Bên trong phương thức finalize (), bạn sẽ chỉ định các hành động đó phải được thực hiện trước khi một đối tượng bị hủy.

Phương thức finalize () có dạng chung này

protected void finalize( ) {
   // finalization code here
}

Ở đây, từ khóa được bảo vệ là một trình chỉ định ngăn chặn truy cập đến finalize () bằng mã được định nghĩa bên ngoài lớp của nó.

Điều này có nghĩa rằng bạn không thể biết khi nào hoặc thậm chí nếu finalize () sẽ được thực hiện. Ví dụ, nếu chương trình của bạn kết thúc trước khi việc thu thập rác xảy ra, finalize () sẽ không thực thi.

Không có nhận xét nào:

Đăng nhận xét

Lập trình Java - Ngoại lệ

Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện chương trình. Khi xảy ra Ngoại lệ , luồng bình thường...