Từ khóa this trong lập trình hướng đối tượng
Lập trình Java cơ bản đến hướng đối tượng
Danh sách bài học
Từ khóa this trong lập trình hướng đối tượng
Dẫn nhập
Trong bài trước, Kteam đã giải thích các bạn từ khóa STATIC. Tiếp tục ở bài này, chúng ta sẽ tìm hiểu lại từ khóa this.
Nội dung
Để đọc hiểu bài này, tốt nhất các bạn nên có kiến thức cơ bản về các phần sau:
- CÁC BIẾN TRONG JAVA.
- CÁC KIỂU DỮ LIỆU TRONG JAVA.
- CÁC HẠNG TOÁN TỬ TRONG JAVA
- CẤU TRÚC RẼ NHÁNH TRONG JAVA
- VÒNG LẶP WHILE TRONG JAVA
- VÒNG LẶP FOR TRONG JAVA
- MẢNG TRONG JAVA
- VÒNG LẶP FOR-EACH TRONG JAVA
- VAI TRÒ BREAK, CONTINUE TRONG VÒNG LẶP JAVA
- SWITCH TRONG JAVA
- LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
- CLASS TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài này chúng ta sẽ tìm hiểu những vấn đề sau:
- Từ khóa this làm gì?
- Cách sử dụng this
Từ khóa this làm gì?
Từ khóa this dùng để ánh xạ đối tượng hiện tại. Giống như trong lớp Student có rất nhiều đối tượng như bạn Châu, Long, Thanh,… thì khi xử lý các thuộc tính và phương thức ta sẽ dùng từ ‘bạn ấy’ để ám chỉ đối tượng hiện tại cần thực hiện.
Cách sử dụng this
Ánh xạ đối tượng khi cần sử dụng
Như những ví dụ trước. Nếu như không sử dụng this trong phương thức khởi tạo:
public class Person {
public String name;
public int age;
public float height;
public Person(String name, int age, float height) {
name = name;
age = age;
height = height;
}
}
Ta hãy thử khởi tạo đối tượng và in thông tin ra:
public class HelloWorld {
public static void main(String[] args) {
Person a = new Person("Chau", 21, 1.7f);
System.out.println(a.name);
System.out.println(a.age);
System.out.println(a.height);
}
}
Ta thấy xuất hiệt giá trị mặc định của thuộc tính khi khởi tạo, có nghĩa việc gán giá trị khi khởi tạo không thành công. Bây giờ ta hãy quan sát lại cách hiển thị trên Eclipse:
Như cách Eclipse thể hiện thì những biến màu xanh biển là chính là thuộc tính, còn biến mà nâu là tham số trong phương thức. Như vậy, nếu không có this, ta đang gán giá trị tham số cho chính nó. Không tác động đến thuộc tính của đối tượng.
Chỉ cần thêm this, màu sắc đã thay đổi.
Gọi phương thức từ lớp hiện tại
Ngoài gọi được thuộc tính, thì this có thể gọi đến phương thức từ lớp hiện tại.
Ví dụ: viết phương thức trả thông tin Person và gọi mỗi lần khởi tạo đối tượng.
public class Person {
public String name;
public int age;
public float height;
public Person(String name, int age, float height) {
this.name = name;
this.age = age;
this.height = height;
this.getInfo();
}
public void getInfo() {
System.out.println("Name:"+this.name);
System.out.println("Age:"+this.age);
System.out.println("Height:"+this.height);
}
}
Tại chương trình main
public class HelloWorld {
public static void main(String[] args) {
Person a = new Person("Chau", 21, 1.7f);
Person b = new Person("Long", 24, 1.7f);
}
}
Gọi lại phương thức khởi tạo
Khi dùng this() thì sẽ triệu hồi phương thức khởi tạo Constructor của lớp hiện tại. Thường được sử dụng trong việc có nhiều phương thức khởi tạo và muốn tái sự dụng code nhiều lần:
Ví dụ: ta tạo 3 phương thức khởi tạo cho Person như sau
public class Person {
public String name;
public int age;
public float height;
public Person(String name) {
this.name = name;
}
public Person(String name, int age) {
this(name);
this.age = age;
}
public Person(String name, int age, float height) {
this(name, age);
this.height = height;
}
public void getInfo() {
System.out.println("Name:"+this.name);
System.out.println("Age:"+this.age);
System.out.println("Height:"+this.height);
}
}
Như vậy ở phương thức main, ta có thể khởi tạo đối tượng Person theo nhiều cách khác nhau:
public class HelloWorld {
public static void main(String[] args) {
Person a = new Person("Chau");
Person b = new Person("Chau", 21);
Person c = new Person("Chau", 21, 1.7f);
}
}
Việc chạy các phương thức khởi tạo có thể hiểu theo cách sau:
Trả về đối tượng (instance) của lớp hiện tại
Ta sẽ trả về instance của lớp hiện bằng từ khóa this như sau:
public class Person {
public String name;
public int age;
public float height;
public Person(String name, int age, float height) {
this.name = name;
this.age = age;
this.height = height;
}
public Person getInstance() {
return this;
}
}
public class HelloWorld {
public static void main(String[] args) {
Person a = new Person("Chau", 21, 1.7f);
System.out.println(a);
System.out.println(a.getInstance());
Person b = a;
Person c = a.getInstance();
System.out.println(b);
System.out.println(c);
}
}
Ở kết quả đều trả về chung một giá trị, giá trị in ra theo kiểu quy tắc kiểu dữ liệu tham chiếm mà Kteam đã nói trước đó: [tên lớp]@[vị trí lưu trữ]
Kết
Như vậy chúng ta đã tìm hiểu từ khóa static trong lập trình hướng đối tượng
Ở bài sau, Kteam sẽ giới thiệu đến bạn về KẾ THỪA TRONG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Từ khóa this trong lập trình hướng đối tượng dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!
Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Nội dung bài viết
Tác giả/Dịch giả
Khóa học
Lập trình Java cơ bản đến hướng đối tượng
Với mục đích giới thiệu đến mọi người về Ngôn ngữ Java - một ngôn ngữ lập trình khá mới mẻ so với C, C++, Java, PHP ở Việt Nam.
Thông qua khóa học LẬP TRÌNH JAVA CƠ BẢN ĐẾN HƯỚNG ĐỐI TƯỢNG, Kteam sẽ hướng dẫn các bạn kiến thức cơ bản của Java. Để từ đó, có được nền tảng cho phép bạn tiếp tục tìm hiểu những kiến thức tuyệt vời khác của Java hoặc là một ngôn ngữ khác.
Cụ thể trong khóa học này, Kteam sẽ giới thiệu với các bạn Java ở phiên bản Java 8
Dạ cho mình hỏi với là nếu đối với trường hợp khởi tạo như là public Person (Person a){} thì bên trong ngoặc kép có cần phải dùng this tới từng thành phần như name, age hay height không ạ, và nếu không sử dụng this thì mình có cần sử dụng gì khác thay thế không ạ, mình cảm ơn ạ =)))
Xứng đáng được điểm 10
cho mình hỏi muốn luyện tập thì vào phần nào nhỉ? Cảm ơn.
cho mình hỏi muốn luyện tập thì vào phần nào nhỉ? Cảm ơn.