THIS TRONG JAVA: 6 Cách sử dụng từ khóa THIS

Ngày đăng: 19/06/2020   -    Cập nhật: 12/04/2021
Bài viết này mình sẽ giúp bạn tìm hiểu về từ khóa this trong Java qua 6 ví dụ cụ thể để bạn nắm rõ cách sử dụng chúng trong khi lập trình.


1. Giới thiệu vấn đề



Khi làm việc với Java được một thời gian dài, các bạn có lẽ đã nghe qua thuộc tính của lớp và biến của hàm.


Nhưng làm sao phân biệt được hai khái niệm này?


Đôi khi người lập trình đặt tên chúng y hệt nhau khiến việc xử lý đôi khi gặp chút khó khăn.


Hoặc khi làm việc với đối tượng và các hàm constructor, muốn gọi qua lại giữa các hàm constructor thì bạn sẽ làm như thế nào?


> Đọc thêm: Tất tần tật về Constructor trong Java


Làm thế nào để tận dụng code có sẵn của các hàm mà không cần viết lại nhiều lần?


Dám chắc rằng bạn sẽ bối rồi khi cần giải quyết vấn đề như thế.


Tuy nhiên trong Java, bạn chỉ cần sử dụng một từ thôi đã đủ để giải quyết các vấn đề trên – đó chính là this.


Từ khóa this trong Java là một biến tham chiếu, được sử dụng để tham chiếu tới đối tượng của lớp hiện tại.


Hay nói theo cách khác, từ khóa this dùng để ánh xạ đối tượng hiện tại.


Giống như trong lớp NgườiYêu có rất nhiều đối tượng như Thảo, An, Uyên, Trang,… thì khi xử lý các thuộc tính và phương thức ta sẽ dùng từ em để ám chỉ đối tượng hiện tại cần thực hiện.



2. 6 Cách sử dụng từ khóa this trong Java



6 Cách sử dụng this trong Java

6 Cách sử dụng this trong Java

 
Trong Java, từ khóa this tuy ngắn gọn như có tổng cộng tất cả 6 cách sử dụng.


2.1. Sử dụng this để tham chiếu tới biến instance của lớp hiện tại.



Đây là cách mà từ khóa this giúp bạn phân biệt giữa biến toàn cụctham số khi tên của chúng hoàn toàn giống nhau.


Phần code ví dụ bên dưới hy vọng sẽ giúp bạn hiểu ra vấn đề.




package thisdemo;

public class ReferInstanceVariables {
    int a;
    int b;

    // Hàm constructor chứa tham số
    ReferInstanceVariables(int aint b) {
        this.a = a;
        this.b = b;
    }

    void display() {
    // Hiển thị giá trị của biến a và b
        System.out.println("a = " + a + "\nb = " + b);
    }

    public static void main(String[] args) {
        ReferInstanceVariables object = new ReferInstanceVariables(199);
        object.display();
    }
}
 


Như bạn thấy đó, biến a và biến b đặt ở bên ngoài hàm ReferInstanceVariables có tên hoàn toàn giống tham số được truyền vào.


Tuy nhiên, khi gọi this.a thì Java sẽ hiểu là nó cần gọi đến biến a có trong bối cảnh (context) hiện tại.


Trong trường hợp này, this.a = a sẽ tương đương với this.a = 1. Do đó, biến a sẽ được gán giá trị 1 khi chạy chương trình.


Tương tự như vậy đối với this.b = b



2.2. Sử dụng this() gọi Constructor của lớp hiện tại



Cách này được ưu tiên sử dụng nếu chương trình có nhiều Constructor và có nhu cầu sử dụng lại.



package thisdemo;

public class InvokeConstructor {
    int a;
    int b;

    // Hàm constructor mặc định
    InvokeConstructor() {
        this(199);
        System.out.println("Hàm constructor mặc định \n");
    }

    // Hàm constructor chứa tham số
    InvokeConstructor(int aint b) {
        this.a = a;
        this.b = b;
        System.out.println("Tham số mặc định");
    }

    public static void main(String[] args) {
        InvokeConstructor object = new InvokeConstructor();
    }
}
 


Khi bạn chạy chương trình, bạn sẽ thấy this(1, 99) sẽ gọi đến contructor có chứa tham số (chính xác là 2 tham số kiểu int)


2.3. Sử dụng this để trả về biến instance của lớp hiện tại.



Đặc biệt lưu ý rằng kiểu trả về của phương thức phải là kiểu class. Nếu không tin bạn hãy thử in ra biến tham chiếu và this để kiểm tra.



package thisdemo;

public class ReturnInstance {
    int a;
    int b;

    // Hàm constructor mặc định
    ReturnInstance() {
        a = 1;
        b = 99;
    }

    // Phương thức trả về biến instance của lớp
    ReturnInstance get() {
        return this;
    }

    // Hiện thị giá trị của a và b
    void display() {
        System.out.println("a = " + a + "\nb = " + b);
    }

    public static void main(String[] args) {
        ReturnInstance object = new ReturnInstance();
        object.get().display();
    }
}
 


Hãy thử chạy để xem kết quả bạn nhé.


2.4. Sử dụng this làm đối số của phương thức.



Thông thường thì this trong trường hợp này được sử dụng nhiều đối với các chương trình Java có liên quan đến các yêu cầu xử lý sự kiện.



package thisdemo;

public class MethodParameter {
    int a;
    int b;

    // Hàm constructor mặt đinh
    MethodParameter() {
        a = 1;
        b = 99;
    }

    // Phương thức này nhận this như là một tham số
    void display(MethodParameter obj) {
        System.out.println("a = " + obj.a + "\nb = " + obj.b);
    }

    // Trả về biến instance của lớp
    void get() {
        display(this);
    }

    public static void main(String[] args) {
        MethodParameter object = new MethodParameter();
        object.get();
    }
}
 


2.5. Sử dụng để gọi phương thức của lớp hiện tại.



Nhưng trên thực tế, nếu bạn quên hoặc không sử dụng từ khoá this, trình biên dịch của Java sẽ tự động thay bạn thêm từ khoá this cho việc gọi phương thức.



package thisdemo;

public class InvokeClassMethod {
    void display() {
        // gọi hàm show
        this.show();
        System.out.println("Kết thúc hàm display");
    }

    void show() {
        System.out.println("Hàm show được gọi");
    }

    public static void main(String args[]) {
        InvokeClassMethod ahihi = new InvokeClassMethod();
        ahihi.display();
    }
}
 


2.6. Sử dụng làm đối số của hàm constructor.



Tính năng này trong thực tế rất hữu ích, nhất là với các hàm constructor được sử dụng nhiều lần.



package thisdemo;

public class ArgumentConstructor {

    int x = 100;

    // Hàm constructor tạo ra đối tượng A
    // sau đó chuyển nó thành đối số trong hàm constructor
    ArgumentConstructor() {
        Ahihi obj = new Ahihi(this);
    }

    // phương thức hiện thị giá trị của x
    void display() {
        System.out.println("Giá trị của x trong lớp B là: " + x);
    }
    class Ahihi {
        ArgumentConstructor obj;

        // Phương thức khởi tạo tham số với dối tượng B
        Ahihi(ArgumentConstructor obj) {
            this.obj = obj;
            // gọi phương thức display của lớp B
            obj.display();
        }
    }

    public static void main(String[] args) {
        ArgumentConstructor obj = new ArgumentConstructor();
    }
}
 


3. Chúc mừng bạn đã hiểu sâu thêm về từ khóa this trong Java



This trong Java là một trong những từ khoá cực kỳ quan trọng, nó vừa giúp bạn tối ưu được code, vừa hỗ trợ xây dựng các phương án giải quyết vấn đề một các nhanh – gọn – lẹ.


Nếu bạn đam mê và theo đuổi để trở thành một lập trình viên Java thì chắc chắn luôn là bạn còn làm việc với this dài dài.


Bởi Java làm việc hầu hết dựa trên lớp và các đối tượng mà this chính là cầu nối quan trọng để liên kết các thành phần bên trên lại với nhau.


Nếu bạn chưa hiểu và dùng được từ khóa this thì hãy luyện tập đi luyện tập lại 6 cách sử dụng ở trên bạn nhé.


Hoặc...


> Thực sự làm chủ ngôn ngữ Java bằng cách tham gia Khóa học Java Fullstack (Khóa huấn luyện Java Fullstack trong 4 - 6 tháng) tại NIIT - ICT Hà Nội.



> Có thể bạn muốn biết: this trong JavaScript (Rất khác với this trong Java đó)


---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học thực tế + Tuyển dụng ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0383.180086
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
 
#niit #icthanoi #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python
Bình luận Facebook
Khóa học liên quan đến bài viết

Khóa học PHP Full stack [2023] cho người mới bắt đầu

96 giờ
Khóa học Lập trình PHP Full stack, phiên bản cập nhật lần thứ 8. Dạy Lập trình PHP bài bản từ Front end đến Back end + Laravel. Hướng dẫn làm 2 Dự Án Web lớn

Khóa học Java Full stack (IJFD)

104 giờ
Học lập trình Java Fullstack với khóa học được xây dựng theo lộ trình bài bản, từ JAVA CƠ BẢN đến JAVA WEB và nâng cao về JAVA FRAMEWORK như: Spring Boot, Hibernate

Khóa học Lập trình Android tại Hà Nội

59 giờ
NIIT - ICT Hà Nội cung cấp khóa học Lập trình Android với ngôn ngữ lập trình Java. Chương trình cung ứng lập trình viên Android theo yêu cầu doanh nghiệp.

Lập trình Android Nâng cao

56 giờ
Khóa học Android nâng cao cung cấp kiến thức và kỹ năng chuyên sâu về lập trình Android. Phát triển ứng dụng tiên triến như: Lập trình giao diện tùy biến, xử lý dữ liệu nâng cao
Mục lục
Đăng ký tư vấn
Nhân viên gọi điện tư vấn miễn phí sau khi đăng ký
Được cập nhật các ưu đãi sớm nhất
Hotline: 0383180086
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Hãy đăng ký để nhận những thông tin mới nhất về học bổng mới nhất tại NIIT - ICT Hà Nội
top
Đóng lại Đăng ký học tại NIIT - ICT Hà Nội
6260+ học viên đã theo học tại NIIT - ICT Hà Nội và có việc làm tốt trong ngành lập trình. Nắm lấy cơ hội ngay hôm nay!
Chọn khóa học
  • KHÓA HỌC LẬP TRÌNH FRONT END VỚI REACT.JS
  • KHÓA HỌC LẬP TRÌNH PHP WEB
  • Khóa học PHP Full stack [2023] cho người mới bắt đầu
  • Khóa học BIG DATA với Hadoop và Spark
  • Khóa học Lập trình Android tại Hà Nội
  • [Tuyển sinh 2023] Lập trình viên Quốc tế DigiNxt
  • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại Hà Nội
  • LẬP TRÌNH GAME
    • Khóa học Lập trình Game Unity
  • LẬP TRÌNH WEB FRONT END
    • KHÓA HỌC PYTHON HƯỚNG ĐỐI TƯỢNG
    • KHÓA HỌC ANGULAR & TYPESCRIPT (FRONT END)
  • LẬP TRÌNH WEB BACK END
    • LẬP TRÌNH JAVA WEB VỚI FRAME WORK
    • Lập trình Web với Django
    • Lập trình PHP với Laravel Framework
  • CHƯƠNG TRÌNH ĐÀO TẠO ỨNG DỤNG CÔNG NGHỆ
    • Khóa học Tiền lương & Phúc lợi (C&B Excel) tại TP HCM
  • LẬP TRÌNH WEB FULL STACK
    • Khóa học Java Full stack (IJFD)
  • LẬP TRÌNH MOBILE
    • FRONT-END VỚI REACTJS VÀ REACT NATIVE
    • Lập trình Android Nâng cao
  • ĐÀO TẠO CHO DOANH NGHIỆP
    • KHÓA HỌC BUSINESS ANALYSIC TỪ CƠ BẢN ĐẾN NÂNG CAO 2023
    • Khóa học Magento: Làm chủ CMS TMĐT lớn nhất
    • Khóa học IOT: Xây dựng Sản phẩm IOT với Raspberry Pi
    • Khóa học Automation Testing Chuyên nghiệp
  • KHÓA HỌC DỰ ÁN
    • Học sử dụng bộ Office: Word, Excel, Power Point, Mail chuyên nghiệp
  • KHÓA HỌC KHÁC
    • VBA Excel Toàn Tập (Cơ Bản - Nâng Cao)
    • VBA Excel Nâng cao
    • Khóa học JMeter: Performance Testing
    • Khóa học Tester đạt chuẩn Quốc tế ISTQB Foundation Level
    • Khoá Học Tester đạt chuẩn quốc tế ISTQB Advanced Level
Bạn chưa chọn khóa học cần đăng ký
Tên không được để trống
Số điện thoại không được để trống
Email không được để trống
Đăng ký học thành công!
Cảm ơn bạn đã đăng ký học tại NIIT - ICT HÀ NỘI!