Từ khóa this trong Java

19 tháng 09, 2022 – 375 lượt xem

Người dịch: Lê Trung Kiên lớp java 08
Bài viết gốc: https://www.baeldung.com/java-this

1. Mở đầu.

Hôm nay, chúng ta sẽ cùng tìm hiểu từ khóa this.
Trong java, từ khóa this là một tham chiếu đến đối tượng hiện tại có phương thức đang được gọi.

2. Tham chiếu tới biến instance

Mục đích của việc sử dụng từ khóa this ở đây là để phân biệt đâu là biến và đâu là thuộc tính của lớp khi chúng trùng tên với nhau. Điều này thể hiện rõ ràng nhất thông qua constuctor.

Cùng xem qua ví dụ sau:

public

class

KeywordTest

{

private

String

name;

private

int

age;

public

KeywordTest

(

String

name,

int

age) { name = name; age = age; }

public

static

void

Main

(string[] args)

{ KeywordTest keywordTest =

new

KeywordTest

(

"Kevin"

,

23

); System.out.

println

(keywordTest.name); } }

Đáng lẽ ra khi truyền tham số “Kevin” và 23 vào đối tượng trên thì khi in ra màn hình phải hiển thị được name là Kevin. Tuy nhiên lại in ra giá trị là null. Lí do là bởi complier không phân biệt được đâu là tham số, đâu là thuộc tính của class. Vì vậy chúng ta cần từ khóa this để phân biệt hai thứ này.

public

class

KeywordTest

{

private

String

name;

private

int

age;

public

KeywordTest

(

String

name,

int

age) {

this

.name = name;

this

.age = age; }

public

static

void

Main

(string[] args)

{ KeywordTest keywordTest =

new

KeywordTest

(

"Kevin"

,

23

); System.out.

println

(keywordTest.name); } }

Như các bạn có thể thấy, từ khóa this giúp complier phân biệt được đâu là tham số, đâu là thuộc tính của class.

3. Tham chiếu các Contrucstor trong cùng Class

Từ một hàm khởi tạo, ta có thể dùng this() để gọi một hàm khởi tạo khác trong cùng class. Ví dụ dưới đây, ta sẽ sử dụng this() thay cho hàm khởi tạo mặc định, bên trong một hàm khởi tạo có tham số.
Nếu bạn chưa biết hàm khởi tạo mặc định là gì, có thể tham khảo bài viết về các hàm khởi tạo ở đây.

public

KeywordTest

(

String

name,

int

age) {

this

(); }

Ngược lại, ta cũng có thể gọi tới hàm khởi tạo có tham số bên trong một hàm khởi tạo không tham số:

public

KeywordTest

() {

this

(

"John"

,

27

); }
  • Lưu ý là this() phải được nằm ở dòng đầu tiên của hàm khởi tạo, nếu không sẽ báo lỗi.

4. Sử dụng this như tham số

Ở đây chúng ta có phương thức printInstance() với this là tham số:

public

KeywordTest

() { printInstance(

this

); }

public

void

printInstance

(

KeywordTest thisKeyword

) { System.

out

.println(thisKeyword); }

Bên trong hàm khởi tạo, ta gọi tới phương thức printInstance(). Với từ khóa this, chúng ta đã tham chiếu tới instance hiện tại.

5. Returning this

Ta cũng có thể dùng this để trả về instace hiện tại của class từ phương thức.

6. Từ khóa this bên trong inner class

Ta có thể dùng this từ một inner class (class bên trong một class khác), hãy xem ví dụ sau:

public

class

KeywordTest

{

private

String

name;

class

ThisInnerClass

{

boolean

isInnerClass =

true

;

public

ThisInnerClass

()

{ KeywordTest thisKeyword = KeywordTest.

this

;

String

outerString = KeywordTest.

this

.name; } } }

Ở đây, bên trong hàm khởi tạo của inner class, ta có thể tham chiếu đến class KeywordTest bằng cách gọi KeywordTest.this. Thậm chí ta có thể tham chiếu tới các thuộc tính của KeywordTest bằng cách gọi KeywordTest.this.name.

7. Kết luận

Trong bài viết này, hi vọng các bạn có thêm hiểu biết về từ khóa this trong java. Cảm ơn các bạn đã theo dõi.