Từ khóa super trong Java

0
81

Từ khóa super trong Java là một biến tham chiếu mà được sử dụng để tham chiếu đến đối tượng lớp cha gần nhất. Bất cứ khi nào bạn tạo instance (sự thể hiện) của lớp con, một instance của lớp cha được tạo ngầm định, được tham chiếu bởi biến super.

Sự sử dụng của từ khóa super trong Java

  • super được sử dụng để tham chiếu biến instance của lớp cha gần nhất.
  • super() được sử dụng để triệu hồi Constructor của lớp cha gần nhất.
  • super được sử dụng để triệu hồi phương thức của lớp cha gần nhất.

Phần tiếp theo, chúng ta sẽ tìm hiểu chi tiết từng sự sử dụng của từ khóa super trong Java.

super được để tham chiếu biến instance của lớp cha gần nhất

Vấn đề xảy ra nếu không có từ khóa super:

Trong ví dụ trên, cả hai lớp Vehicle và Bike có cùng thuộc tính speed chung. Biến instance của lớp hiện tại được tham chiếu bởi instance theo mặc định, nhưng mình phải tham chiếu tới biến instance của lớp cha, và đó là tại sao chúng ta sử dụng từ khóa super để phân biệt giữa biến instance của lớp cha và biến instance của lớp hiện tại.

Xử lý vấn đề với từ khóa super trong Java:

super() được sử dụng để triệu hồi Constructor của lớp cha gần nhất

Bạn theo dõi ví dụ sau:

Ghi chú: super() được tự động thêm vào trong mỗi Constructor của lớp bởi Compiler.

Qua các chương trước, chúng ta đã biết rằng constructor mặc định được cung cấp bởi Compiler nhưng nó cũng thêm super() cho lệnh đầu tiên. Nếu bạn đang tạo constructor cho riêng mình và bạn không có this() hoặc super() như là lệnh đầu tiên, thì Compiler sẽ cung cấp super() như là lệnh đầu tiên của Constructor đó.

Một ví dụ khác về từ khóa super, trong ví dụ này super() được cung cấp ngầm định bởi Compiler.

super được sử dụng để triệu hồi phương thức của lớp cha gần nhất

Từ khóa super cũng có thể được sử dụng để triệu hồi phương thức lớp cha gần nhất. Nó nên được sử dụng trong lớp con mà có chứa cùng phương thức như lớp cha, như trong ví dụ sau:

Trong ví dụ trên, cả hai lớp Student và Person cùng có phương thức message(), nếu chúng ta gọi phương thức message() từ lớp Student, nó sẽ gọi phương thức message() của lớp Student chứ không phải của lớp Person bởi vì quyền ưu tiên cục bộ.

Trong tình huống mà không có phương thức nào của lớp con giống lớp cha, thì không cần sử dụng từ khóa super. Trong ví dụ dưới đây, phương thức message() được triệu hồi từ lớp Student, nhưng lớp Student không có phương thức message() này, vì thế bạn có thể trực tiếp gọi phương thức message().

Ví dụ chương trình không cần từ khóa super:

 http://vietjack.com/java/tu_khoa_super_trong_java.jsp

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.