Groovy - Phương pháp
Một phương thức trong Groovy được định nghĩa với kiểu trả về hoặc với deftừ khóa. Các phương thức có thể nhận bất kỳ số lượng đối số nào. Không cần thiết phải xác định rõ ràng các kiểu khi xác định các đối số. Các bổ ngữ như public, private và protected có thể được thêm vào. Theo mặc định, nếu không có công cụ sửa đổi khả năng hiển thị nào được cung cấp, thì phương thức là công khai.
Loại đơn giản nhất của một phương thức là một phương thức không có tham số như hình bên dưới -
def methodName() {
//Method code
}
Sau đây là một ví dụ về phương pháp đơn giản
class Example {
static def DisplayName() {
println("This is how methods work in groovy");
println("This is an example of a simple method");
}
static void main(String[] args) {
DisplayName();
}
}
Trong ví dụ trên, DisplayName là một phương thức đơn giản bao gồm hai câu lệnh println được sử dụng để xuất một số văn bản ra bảng điều khiển. Trong phương thức main static của chúng tôi, chúng tôi chỉ gọi phương thức DisplayName. Kết quả của phương thức trên sẽ là:
This is how methods work in groovy
This is an example of a simple method
Tham số phương pháp
Một phương thức thường hữu ích hơn nếu hành vi của nó được xác định bởi giá trị của một hoặc nhiều tham số. Chúng ta có thể chuyển các giá trị đến phương thức được gọi bằng cách sử dụng các tham số của phương thức. Lưu ý rằng tên tham số phải khác nhau.
Loại đơn giản nhất của một phương thức với các tham số như hình dưới đây -
def methodName(parameter1, parameter2, parameter3) {
// Method code goes here
}
Sau đây là một ví dụ về phương thức đơn giản với các tham số
class Example {
static void sum(int a,int b) {
int c = a+b;
println(c);
}
static void main(String[] args) {
sum(10,5);
}
}
Trong ví dụ này, chúng tôi đang tạo một phương thức tổng với 2 tham số, a và b. Cả hai thông số đều thuộc loạiint. Sau đó, chúng tôi đang gọi phương thức sum từ phương thức chính của chúng tôi và chuyển các giá trị cho các biếna và b.
Đầu ra của phương thức trên sẽ là giá trị 15.
Tham số mặc định
Cũng có một điều khoản trong Groovy để chỉ định các giá trị mặc định cho các tham số trong các phương thức. Nếu không có giá trị nào được chuyển đến phương thức cho các tham số, thì các giá trị mặc định sẽ được sử dụng. Nếu cả hai tham số nondefault và default đều được sử dụng, thì cần phải lưu ý rằng các tham số mặc định phải được xác định ở cuối danh sách tham số.
Sau đây là một ví dụ về phương thức đơn giản với các tham số:
def someMethod(parameter1, parameter2 = 0, parameter3 = 0) {
// Method code goes here
}
Hãy xem xét cùng một ví dụ mà chúng ta đã xem xét trước đây để cộng hai số và tạo một phương thức có một tham số mặc định và một tham số không mặc định khác -
class Example {
static void sum(int a,int b = 5) {
int c = a+b;
println(c);
}
static void main(String[] args) {
sum(6);
}
}
Trong ví dụ này, chúng tôi đang tạo một phương thức tổng với hai tham số, a và b. Cả hai tham số đều có kiểu int. Sự khác biệt giữa ví dụ này và ví dụ trước là trong trường hợp này, chúng tôi đang chỉ định một giá trị mặc định chob là 5. Vì vậy, khi chúng ta gọi phương thức sum từ phương thức chính của mình, chúng ta có tùy chọn chỉ truyền một giá trị là 6 và giá trị này sẽ được gán cho tham số a trong sum phương pháp.
Đầu ra của phương thức trên sẽ là giá trị 11.
class Example {
static void sum(int a,int b = 5) {
int c = a+b;
println(c);
}
static void main(String[] args) {
sum(6,6);
}
}
Chúng ta cũng có thể gọi phương thức sum bằng cách chuyển 2 giá trị, trong ví dụ ở trên, chúng ta đang chuyển 2 giá trị là 6. Giá trị thứ hai của 6 sẽ thực sự thay thế giá trị mặc định được gán cho tham số b.
Đầu ra của phương thức trên sẽ là giá trị 12.
Giá trị trả về phương pháp
Các phương thức cũng có thể trả lại giá trị cho chương trình đang gọi. Điều này là bắt buộc trong ngôn ngữ lập trình hiện đại, trong đó một phương thức thực hiện một số loại tính toán và sau đó trả về giá trị mong muốn cho phương thức gọi.
Sau đây là một ví dụ về phương thức đơn giản với giá trị trả về.
class Example {
static int sum(int a,int b = 5) {
int c = a+b;
return c;
}
static void main(String[] args) {
println(sum(6));
}
}
Trong ví dụ trên của chúng tôi, hãy lưu ý rằng lần này chúng tôi đang chỉ định một kiểu trả về cho tổng phương thức của chúng tôi là kiểu int. Trong phương thức, chúng ta đang sử dụng câu lệnh return để gửi giá trị tổng đến chương trình chính đang gọi. Vì giá trị của phương thức hiện có sẵn cho phương thức chính, chúng tôi đang sử dụngprintln chức năng hiển thị giá trị trong giao diện điều khiển.
Đầu ra của phương thức trên sẽ là giá trị 11.
Phương pháp phiên bản
Các phương thức thường được triển khai bên trong các lớp bên trong Groovy giống như ngôn ngữ Java. Một lớp không là gì ngoài một bản thiết kế hoặc một khuôn mẫu để tạo ra các đối tượng khác nhau xác định các thuộc tính và hành vi của nó. Các đối tượng của lớp thể hiện các thuộc tính và hành vi được định nghĩa bởi lớp của nó. Vì vậy, các hành vi được định nghĩa bằng cách tạo ra các phương thức bên trong lớp.
Chúng ta sẽ xem các lớp chi tiết hơn trong chương sau nhưng Sau đây là một ví dụ về việc triển khai phương thức trong một lớp. Trong các ví dụ trước, chúng ta đã định nghĩa phương thức của mình là phương thức tĩnh, nghĩa là chúng ta có thể truy cập các phương thức đó trực tiếp từ lớp. Ví dụ tiếp theo về các phương thức là các phương thức thể hiện trong đó các phương thức được truy cập bằng cách tạo các đối tượng của lớp. Một lần nữa chúng ta sẽ thấy các lớp trong chương sau, bây giờ chúng ta sẽ trình bày cách sử dụng các phương thức.
Sau đây là một ví dụ về cách các phương pháp có thể được thực hiện.
class Example {
int x;
public int getX() {
return x;
}
public void setX(int pX) {
x = pX;
}
static void main(String[] args) {
Example ex = new Example();
ex.setX(100);
println(ex.getX());
}
}
Trong ví dụ trên của chúng tôi, lưu ý rằng lần này chúng tôi không chỉ định thuộc tính tĩnh cho các phương thức lớp của chúng tôi. Trong hàm chính của chúng ta, chúng ta thực sự đang tạo một thể hiện của lớp Ví dụ và sau đó gọi phương thức của đối tượng 'ex'.
Đầu ra của phương thức trên sẽ là giá trị 100.
Tên tham số cục bộ và bên ngoài
Groovy cung cấp cơ sở giống như java để có các tham số cục bộ và toàn cục. Trong ví dụ sau,lx là một tham số cục bộ có phạm vi chỉ trong chức năng của getX() và xlà một thuộc tính toàn cục có thể được truy cập bên trong toàn bộ lớp Ví dụ. Nếu chúng tôi cố gắng truy cập vào biếnlx bên ngoài getX() , chúng tôi sẽ gặp lỗi.
class Example {
static int x = 100;
public static int getX() {
int lx = 200;
println(lx);
return x;
}
static void main(String[] args) {
println(getX());
}
}
Khi chạy chương trình trên, chúng ta sẽ nhận được kết quả như sau.
200
100
phương pháp này cho Thuộc tính
Cũng giống như trong Java, groovy có thể truy cập các thành viên phiên bản của nó bằng cách sử dụng thistừ khóa. Ví dụ sau cho thấy cách chúng ta sử dụng câu lệnhthis.x, nó tham chiếu đến phiên bản của nó và đặt giá trị của x cho phù hợp.
class Example {
int x = 100;
public int getX() {
this.x = 200;
return x;
}
static void main(String[] args) {
Example ex = new Example();
println(ex.getX());
}
}
Khi chạy chương trình trên, chúng ta sẽ nhận được kết quả là 200 được in trên console.