Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Từ Khóa this Trong Java

Cách Sử Dụng Từ Khóa this Trong Java

Khi bắt đầu lập trình Java, bạn có thể nhận thấy từ khóa this được sử dụng trong phương thức hoặc hàm tạo (constructor). Từ khóa this tham chiếu đến đối tượng hiện tại bên trong phương thức hoặc hàm tạo, và có nhiều trường hợp sử dụng trong Java.

Trong hướng dẫn này, bạn sẽ học về từ khóa this trong Java và cách cũng như lý do nó được sử dụng. Chúng ta cũng sẽ tham khảo một vài ví dụ để minh họa từ khóa this trong thực tế.

Phương Thức Và Hàm Tạo Trong Java

Phương thức và hàm tạo là hai phần quan trọng trong lập trình Java.

Hàm, hoặc phương thức như được gọi trong lập trình hướng đối tượng, là khối mã thực hiện một tác vụ cụ thể. Ví dụ, một phương thức khi thực thi có thể in nội dung mảng ra bảng điều khiển, hoặc xử lý đầu vào người dùng trong chương trình.

Dưới đây là ví dụ về phương thức trong Java in Hôm nay là thứ Hai! ra bảng điều khiển:

public class PrintMessage { public static void main(String[] args) { System.out.println("It's Monday!"); } }

Khi thực thi mã, đầu ra sau được trả về bảng điều khiển: Hôm nay là thứ Hai!

Hàm tạo (constructor) tương tự phương thức và được gọi khi đối tượng được khởi tạo (instantiate) trong chương trình. Đây là ví dụ về hàm tạo đặt giá trị của biến thể hiện day thành Monday khi instance của Monday được khởi tạo và in ra Hôm nay là, theo sau ngày trong tuần, ra bảng điều khiển:

class Monday { private Monday() { day = "Monday"; } public static void main(String[] args) { Monday day_of_the_week = new Monday(); System.out.println("It's " + day_of_the_week.day); } }

Mã trả về: Hôm nay là thứ Hai!

Nếu bạn quan tâm tìm hiểu thêm về hàm tạo, có thể đọc hướng dẫn đầy đủ về hàm tạo Java. Sau khi đã khám phá cơ bản về phương thức và hàm tạo Java, chúng ta có thể bắt đầu thảo luận từ khóa this và cách sử dụng nó trong mã.

Từ Khóa this Trong Java

Trong Java, từ khóa this tham chiếu đến đối tượng hiện tại bên trong phương thức hoặc hàm tạo.

Để minh họa, hãy dùng ví dụ hàm tạo ở trên in ngày trong tuần ra bảng điều khiển. Trong ví dụ dưới đây, chúng ta in giá trị của this và giá trị của đối tượng Monday() vừa khởi tạo:

class Monday { private String day; private Monday() { day = "Monday"; System.out.println(this); } public static void main(String[] args) { Monday day_of_the_week = new Monday(); System.out.println("It's " + day_of_the_week.day); System.out.println(day_of_the_week); } }

Mã trả về:

Main@d716361 It's Monday Main@d716361

Dòng đầu tiên trong đầu ra là giá trị của this, được in ra khi đối tượng Monday() được khởi tạo. Dòng thứ hai là kết quả in Hôm nay là, theo sau giá trị day trong đối tượng day_of_the_week khai báo. Cuối cùng, in giá trị của đối tượng day_of_the_week.

Như bạn thấy, giá trị của this và đối tượng day_of_the_week giống nhau. Điều này có nghĩa từ khóa this tham chiếu đến đối tượng hiện tại bên trong phương thức hoặc hàm tạo.

Các Trường Hợp Sử Dụng this Trong Java

Có hai tình huống chính mà việc sử dụng từ khóa this mang lại giá trị. Đó là:

  • Sử dụng this để phân biệt tên biến
  • Truyền this làm đối số

Một biến thể của từ khóa this, là this(), cũng được dùng khi nạp chồng hàm tạo. Tuy nhiên, đây là cách sử dụng nâng cao hơn của this, nên chúng ta không thảo luận trong bài này.

Sử Dụng this Để Phân Biệt Tên Biến

Hai hoặc nhiều biến không thể có cùng tên bên trong một phạm vi (scope) trong Java. Điều này có nghĩa nếu bạn cố khai báo hai biến dùng cùng tên, logic chương trình sẽ bị ảnh hưởng.

Tuy nhiên, chúng ta có thể vượt qua hạn chế này bằng từ khóa this. this cho phép gán một biến cụ thể cho đối tượng, giúp lưu trữ cả giá trị biến trong đối tượng và giá trị biến ban đầu.

Hãy đi qua ví dụ để minh họa cách hoạt động. Giả sử chúng ta xây dựng chương trình theo dõi tên học sinh được thêm vào danh sách xuất sắc lớp năm. Ứng dụng này nên in tên học sinh ra bảng điều khiển.

Dưới đây là mã để xây dựng ứng dụng này:

class HonorRoll { String studentName; HonorRoll(String studentName) { this.studentName = studentName; } public static void main(String[] args) { HonorRoll alex = new HonorRoll("Alex"); System.out.println("New honor roll inductee: " + alex.studentName); } }

Khi chạy chương trình, kết quả sau được trả về:

New honor roll inductee: Alex

Trong ví dụ này, chúng ta dùng this để theo dõi tên học sinh trong phương thức HonorRoll. Dùng dòng mã sau gán giá trị tham số hàm tạo studentName (là Alex trong ví dụ) cho biến this.studentName. Nếu không làm vậy, kết quả sau sẽ được trả về:

New honor roll inductee: null

Điều này xảy ra vì để phương thức HonorRoll lưu tên học sinh, chúng ta cần dùng this để loại bỏ sự mơ hồ cho trình biên dịch Java. Vì vậy, nếu bỏ từ this khỏi mã, chúng ta nhận giá trị null.

Truyền this Làm Đối Số

Từ khóa this thường dùng để truyền đối tượng hiện tại trong phương thức hoặc hàm tạo cho phương thức khác.

Giả sử chúng ta xây dựng ứng dụng theo dõi số bao hạt cà phê cửa hàng cà phê địa phương còn trong kho. Ứng dụng cho phép chủ cửa hàng thêm vào tổng số bao còn lại, sẽ dùng khi có thêm hàng. Dưới đây là mã có thể dùng tạo ứng dụng này:

class AddStock { int stockToAdd; int stockTotal; AddStock(int stockToAdd, int stockTotal) { this.stockToAdd = stockToAdd; this.stockTotal = stockTotal; System.out.println("Current stock: " + this.stockTotal); calculateNewStock(this); System.out.println("New stock: " + this.stockTotal); } void calculateNewStock(AddStock s) { s.stockTotal += s.stockToAdd; } } class Main { public static void main(String[] args) { AddStock newStockValue = new AddStock(10, 9); } }

Mã trả về:

Current stock: 9 New stock: 19

Phân tích mã: Trong mã, định nghĩa lớp AddStock. Lớp này chứa phương thức nhận hai giá trị - stockToAdd và stockTotal - và gọi phương thức calculateNewStock() tính số bao cà phê còn trong kho.

Sau đó dùng lớp Main() khởi tạo instance của lớp AddStock và cộng hai giá trị: 10 và 9. Sau khi chương trình thực thi, mã cộng hai giá trị chỉ định - số hàng cần thêm và tổng hàng hiện tại - và in ra cả hàng tồn kho hiện tại và mức hàng cập nhật ra bảng điều khiển.

Trong ví dụ này, từ khóa this được dùng làm đối số khi gọi phương thức calculateNewStock(). Điều này cho phép truyền các biến đang làm việc trong lớp AddStock cho phương thức calculateNewStock(), phương thức này cần các biến đó để tính mức hàng cập nhật.

Kết Luận

Từ khóa this trong Java tham chiếu đến đối tượng hiện tại bên trong phương thức hoặc hàm tạo. Trong Java, từ khóa this có hai dùng chính: phân biệt tên biến, và truyền this làm đối số.

Hướng dẫn này đã thảo luận, kèm ví dụ, cách sử dụng từ khóa this trong Java trong ba ngữ cảnh đó. Bây giờ bạn đã trang bị kiến thức cần thiết để bắt đầu sử dụng từ khóa this trong Java như chuyên gia.