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

5.0 (3 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 00:36 26-07-2020 27.390 lượt xem 5 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

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:

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);
	}
}

Từ khóa this trong lập trình hướng đối tượng

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:

Từ khóa this trong lập trình hướng đối tượng

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.

Từ khóa this trong lập trình hướng đố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);
	}
}

Từ khóa this trong lập trình hướng đối tượng


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:

Từ khóa this trong lập trình hướng đối tượng


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);
	}
}

Từ khóa this trong lập trình hướng đối tượng

Ở 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 likeshare để ủ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

Đánh giá

ThanhChung22 đã đánh giá 23:11 29-01-2022

mrthonglion đã đánh giá 15:33 18-10-2021

Fucking awesomee

Nguyễn Long đã đánh giá 21:14 01-01-2020

tuyet

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
APSKai đã bình luận 21:49 12-09-2022

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 ạ =)))

LanhAnhTuan đã bình luận 23:54 26-03-2022

Xứng đáng được điểm 10

duyduc89 đã bình luận 07:13 10-10-2020

cho mình hỏi muốn luyện tập thì vào phần nào nhỉ? Cảm ơn.

duyduc89 đã bình luận 07:12 10-10-2020

cho mình hỏi muốn luyện tập thì vào phần nào nhỉ? Cảm ơn.

Không có video.