Nếu bạn đang theo học Java và là một lập trình viên thì chắc chắn không thể không không biết đến từ khoá Super. Đây là một trong những khái niệm thú vị quan trọng mà bạn cần lưu ý. Cùng tìm hiểu bài viết dưới đây để khám phá toàn bộ kiến thức về từ khóa Super trong Java nhé!
Mục lục bài viết
Từ khóa Super trong Java là gì?
Ngôn ngữ hướng đối tượng bao gồm ba tính năng tích hợp:
- Kế thừa
- Đa hình
- Đóng gói dữ liệu.
Kế thừa đề cập đến quá trình kế thừa các đặc điểm của đối tượng mẹ trong đối tượng con mà không cần phải viết lại mã trong đối tượng con.
Tính đa hình đề cập đến việc cung cấp một giao diện thống nhất để đạt được nhiều chức năng thông qua việc nạp chồng phương thức và ghi đè phương thức. Tính đóng gói đề cập đến việc ẩn dữ liệu dẫn đến quyền truy cập được quản lý vào dữ liệu bằng các phương thức.
Java là một trong những ngôn ngữ hướng đối tượng cung cấp ba tính năng nói trên. Java chứa một số từ khóa dựng sẵn có thể được sử dụng để giao tiếp giữa các lớp cha và con. Một trong những từ khóa như vậy là từ khóa “siêu”.
Thông thường, một lớp con cần phải tương tác với một lớp cha và các phương thức. Đôi khi, các biến cá thể của lớp cha được yêu cầu trong một cá thể lớp con. Trong các trường hợp như vậy, từ khóa super có thể được sử dụng. Từ khóa này cung cấp quyền truy cập vào các biến. Phương thức của lớp cha bằng cách sử dụng một cá thể lớp con.
Công dụng của Super trong Java
Trong Java, một từ khóa siêu về cơ bản có ba cách sử dụng. Những công dụng này được giải thích chi tiết trong phần tiếp theo.
Super để truy cập các biến thành viên của lớp cha
Hãy xem xét một kịch bản trong đó có một lớp cha là Hình dạng và một lớp con là Hình vuông. Lớp cha Shape có một biến kiểu số nguyên có tên là “area”. Lớp Shape cũng chứa một biến thành viên có tên là “area”. Nếu thành viên vùng của lớp Square được truy cập. Thể hiện vùng của lớp Square sẽ được truy cập. Điều này được giải thích tốt nhất với sự trợ giúp của một ví dụ:
Hãy xem xét một lớp Shape cha với định nghĩa lớp sau:
public class Shape {
public int area = 45;
}
A Square class that extends the Shape class looks like this:
public class Square extends Shape
{
public int area=10;
public int getArea()
{
return area;
}
}
Bây giờ, nếu phương thức getArea được gọi từ thể hiện của lớp Square. Thì vùng trả về sẽ là giá trị của thể hiện vùng của lớp Square. Tuy nhiên, lớp cha Shape cũng có khu vực là biến thành viên.
Điều này được thể hiện trong đoạn mã về từ khóa Super trong Java sau:
Square s = new Square();
System.out.println(s.getArea());
Đoạn mã trên sẽ hiển thị 10 trên màn hình điều khiển, là khu vực của Square lớp con.
Nhưng điều gì sẽ xảy ra nếu, khu vực của Shape lớp cha là cần thiết? Làm thế nào bạn có thể nhận được giá trị của cá thể khu vực đó? Lớp con cũng chứa một thành viên thể hiện có cùng tên. Trong những trường hợp như vậy, từ khóa super được sử dụng. Trong ví dụ sau, các thay đổi nhỏ đã được thực hiện trong lớp Square của ví dụ trước.
Hãy xem định nghĩa đã sửa đổi của lớp Square:
public class Square extends Shape
{
public intarea=10;
public int getArea()
{
return area;
}
public int getParentArea()
{
return super.area;
}
}
Trong đoạn mã trên, lớp Square chứa một phương thức bổ sung có tên getParentArea. Bên trong phương thức, từ khóa super đã được sử dụng. Dùng theo sau bởi toán tử dot và thành viên thể hiện của lớp cha. Và được truy cập là vùng trong trường hợp này. Giá trị này đã được trả lại cho chức năng gọi.
Bây giờ, việc thực thi dòng mã sau sẽ hiển thị 45, là vùng của Hình dạng lớp cha.
System.out.println(s.getParentArea());
Bạn có thể thấy rằng mặc dù ‘s’ là đối tượng của lớp Square, vùng của lớp cha được truy cập thông qua đối tượng này.
Về cơ bản, từ khóa super đóng vai trò là tham chiếu đến đối tượng lớp cha trong lớp con. Do đó, khi từ khóa super được sử dụng bên trong Square con. Từ khóa super sẽ đóng vai trò là tham chiếu đến cá thể lớp Shape.
Từ khoá Super truy cập lớp cha Constructor
Từ khóa Super trong Java có thể được sử dụng để truy cập phương thức khởi tạo của lớp cha bên trong lớp con. Để xem cách từ khóa super có thể được sử dụng để truy cập hàm tạo lớp cha, hãy xem ví dụ sau:
Sửa đổi lớp Hình dạng trong ví dụ cuối cùng để bao gồm một lớp.
Lớp Shape bây giờ sẽ giống như sau:
public class Shape {
Shape()
{
System.out.println("This is parent Shape class constructor");
}
}
Ngoài ra, hãy thay đổi định nghĩa của lớp Square và bao gồm một phương thức khởi tạo trong lớp Square.
Lớp Square bây giờ sẽ trông như thế này:
public class Square extends Shape
{
Square()
{
super();
System.out.println("This is child Square class constructor");
}
}
Trong đoạn mã trên, bên trong hàm tạo của lớp Square, từ khóa super được sử dụng làm phương thức “super ()”. Việc sử dụng từ khóa super như một phương thức sẽ gọi phương thức khởi tạo của lớp cha.
Bây giờ, nếu đối tượng của lớp Square được tạo, hàm tạo của lớp Square sẽ được gọi. Bên trong phương thức khởi tạo của lớp Square. Đầu tiên phương thức khởi tạo của lớp Shape sẽ được gọi thông qua super (). Và sau đó phần còn lại của mã bên trong phương thức khởi tạo của lớp Square sẽ được hiển thị.
Bây giờ, nếu lớp Square được khởi tạo như sau:
Square s = new Square();
Đầu ra bảng điều khiển sẽ giống như sau:
This is parent Shape class constructor
This is child Square class constructor
Super để truy cập các phương thức của lớp cha
Cách sử dụng thứ ba và cuối cùng của từ khóa Super trong Java là để truy cập các phương thức của lớp cha trong lớp con.
Sửa đổi các lớp Hình dạng và Hình vuông như sau để hiểu khái niệm này.
Shape Class:
public class Shape {
int area = 45;
public void displayArea()
{
System.out.println("The area of parent class Shape is: "+area);
}
}
Square Class:
public class Square extends Shape
{
int area = 10;
public void displayArea()
{
super.displayArea();
System.out.println("The area of child class Square is: "+area);
}
}
Trong lớp Square, bên trong phương thức displayArea (), phương thức displayArea () của lớp cha đã được gọi bằng phương thức super.displayArea (). Bây giờ, nếu phương thức displayArea () được gọi trên phiên bản của lớp Square. Thì trước tiên nó sẽ gọi phương thức displayArea () của lớp Shape mẹ. Sau đó đoạn mã còn lại trong phương thức displayArea () của lớp Square con được thực thi.
Đoạn mã sau thể hiện khái niệm này:
Square s = new Square();
s.displayArea();
Đầu ra của đoạn mã trên sẽ là:
The area of parent class Shape is: 45
The area of child class Square is: 10
Tổng kết
Hy vọng với những chia sẻ vừa rồi đã giúp bạn hiểu rõ hơn về toàn bộ kiến thức liên quan đến từ khóa Super trong Java. Là một lập trình viên chắc chắn đây sẽ là kiến thức quan trọng mà bạn cần phải trang bị cho mình. Ngoài ra, trên Box.edu.vn còn rất nhiều những kiến thức liên quan đến lập trình, ngôn ngữ Java, Android, Javacript,… đang chờ bạn khám phá. Chúc bạn thành công!