Cùng với các từ khóa khác, Java cũng cung cấp từ khóa này và từ khóa super như là các từ khóa đặc biệt chủ yếu được sử dụng để đại diện cho phiên bản hiện tại của một lớp và tương ứng với nó là siêu lớp. Với sự tương đồng này, cả hai từ khóa này đều có sự khác biệt đáng kể giữa chúng được liệt kê như bên dưới -
Sr. Không. | Phím | this | siêu |
---|---|---|---|
1 | Trình bày và Tham chiếu | từ khóa này chủ yếu đại diện cho phiên bản hiện tại của một lớp. | Mặt khác, từ khóa super đại diện cho phiên bản hiện tại của một lớp cha. |
2 | Tương tác với hàm tạo lớp | từ khóa này được sử dụng để gọi hàm tạo mặc định của cùng một lớp. | Từ khóasuper được sử dụng để gọi hàm tạo mặc định của lớp cha. |
3 | Khả năng truy cập phương thức | từ khóa này được sử dụng để truy cập các phương thức của lớp hiện tại vì nó có tham chiếu của lớp hiện tại. | Người ta có thể truy cập phương thức của lớp cha với sự trợ giúp của từ khóa super. |
4 | Ngữ cảnh tĩnh | từ khóa này có thể được tham chiếu từ ngữ cảnh tĩnh, tức là có thể được gọi từ trường hợp tĩnh. Ví dụ:chúng ta có thể viết System.out.println (this.x) sẽ in ra giá trị của x mà không có bất kỳ lỗi biên dịch hoặc thời gian chạy nào. | Mặt khác, từ khóa super không thể được gọi từ ngữ cảnh tĩnh, tức là không thể được gọi từ phiên bản tĩnh. Ví dụ:chúng tôi không thể viết System.out.println (super.x), điều này sẽ dẫn đến lỗi thời gian biên dịch. |
Ví dụ về điều này so với siêu
Equals.jsp
class A { public int x, y; public A(int x, int y) { this.x = x; this.y = y; } } class B extends A { public int x, y; public B() { this(0, 0); } public B(int x, int y) { super(x + 1, y + 1);// calls parent class constructor this.x = x; this.y = y; } public void print() { System.out.println("Base class : {" + x + ", " + y + "}"); System.out.println("Super class : {" + super.x + ", " + super.y + "}"); } } class Point { public static void main(String[] args) { B obj = new B(); obj.print(); obj = new B(1, 2); obj.print(); } }
Đầu ra
Base class : {0, 0} Super class : {1, 1} Base class : {1, 2} Super class : {2, 3}