Từ khóa super trong java là một biến tham chiếu được sử dụng để tham chiếu trực tiếp đến đối tượng của lớp cha gần nhất.
Khi một lớp được kế thừa từ lớp cha trong cả lớp cha và lớp con đều có một phương thức trùng tên nhau, thế thì làm thế nào có thể gọi phương thức trùng tên đó của lớp cha, java cung cấp cho ta từ khoá super
dùng để chỉ đối tượng của lớp cha.
Bất cứ khi nào bạn tạo ra instance ( thể hiển ) của lớp con, một instance của lớp cha được tạo ra ngầm định, nghĩa là được tham chiếu bởi biến super .
Bạn đang đọc: Từ khóa super trong Java
Tóm Tắt
Super tham chiếu đến biến instance của lớp cha
Từ khóa super được sử dụng để tham chiếu trực tiếp đến biến instance của lớp cha .
Xe đạp thừa kế lớp cha, vận tốc của lớp cha là 50, vận tốc lớp con là 100, nếu không sử dụng super thì khi in vận tốc ra tất cả chúng ta sẽ được tác dụng là của lớp con
class Xe {
int speed = 50;
}
public class XeDap extends Xe {
int speed = 100;
void display() {
System.out.println(speed);
}
public static void main(String args[]) {
Bike b = new Bike();
b.display();
}
}
100
Nếu tất cả chúng ta sử dụng super thì sẽ in ra được vận tốc của lớp cha
class Xe {
int speed = 50;
}
public class XeDap extends Xe {
int speed = 100;
void display() {
System.out.println(super.speed);
}
public static void main(String args[]) {
XeDap b = new XeDap();
b.display();
}
}
50
Sử dụng super() để gọi contructor của lớp cha
Trong java, super()
được sử dụng để gọi trực tiếp constructor của lớp cha.
class Xe {
Xe() {
System.out.println(" Xe được tạo ");
}
}
class XeDap extends Xe {
XeDap() {
super();
System.out.println(" Xe đạp được tạo ");
}
public static void main
(String args[]) {
XeDap b = new XeDap();
}
}
Xe được tạo
Xe đạp được tạo
super ( ) được tự động hóa thêm vào mỗi Constructor của class bởi trình biên dịch .
Như chúng ta đã biết constructor được tạo ra tự động bởi trình biên dịch nhưng nó cũng thêm super()
vào câu lệnh đầu tiên. Nếu bạn tạo constructor và bạn không có this()
hoặc super()
ở dòng lệnh đầu tiên, trình biên dịch sẽ cung cấp super()
của Constructor.
Chú ý : ta không hề dùng nhiều từ khoá này để chỉ lớp ông, lớp cụ … ví dụ điển hình viết như sau là sai : super.super.add ( 1,4 ) ;
class Xe {
Xe() {
System.out.println(" Xe đã được tạo ");
}
}
public class XeDap extends Xe {
int speed;
XeDap(int speed) {
this.speed = speed;
System.out.println(speed);
}
public static void main(String args[]) {
XeDap b = new XeDap(10);
}
}
Xe được tạo
10
Super được sử dụng để gọi phương thức của lớp cha
Từ khóa super
cũng có thể được sử dụng để gọi phương thức của lớp cha. Nó nên được sử dụng trong trường hợp lớp chứa các phương thức tương tự như lớp cha như trong ví dụ dưới đây
class Nguoi {
void xinChao() {
System.out.println(" Xin chao ");
}
}
public class HocSinh extends Nguoi {
void xinChao() {
System.out.println(" Xin chao Thaycacac ");
}
void display() {
message();
super.message();
}
public static void main(String args[]) {
HocSinh hocSinh = new HocSinh();
hocSinh.display();
}
}
Xin chao Thaycacac
Xin chao
Source: https://final-blade.com
Category : Kiến thức Internet