Kế thừa phương thức khởi tạo của lớp cha – Bài giảng ngôn ngữ lập trình java – 123docz.net

Mỗi lớp (cho dù là lớp con hay lớp cha) đều có riêng một hàm khởi tạo để thiết lập
các trạng thái ban đầu của đối tượng được tạo ra.

Hàm khởi tạo của lớp cha có trách nhiệm khởi tạo trạng thái chung. Mỗi lớp con có
hàm khởi tạo riêng để tạo ra trạng thái cụ thể của đối tượng con. Thông thường, hàm
khởi tạo lớp con sẽ gọi hàm khởi tạo lớp cha. Việc này thực hiện bằng cách sử dụng từ
khóa super.

Nếu từ khóa super được gọi, nó phải đứng ở dòng đầu tiên trong hàm khởi tạo của
lớp con.

Thông thường, một số biến của lớp con sẽ trùng với các biến của lớp cha. Do đó,
các biến trùng này sẽ được truyền vào hàm super.

Ví dụ:

public class Publication {

String title;

double price;

int coppies;

Publication(String pTitle, double pPrice, int pCoppies){

title = pTitle;

price = pPrice;

coppies = pCoppies;

}
}

public class Book extends Publication{

String author;

Book(String pTitle, String pAuthor, double pPrice, int

pCoppies){

super(pTitle,pPrice,pCoppies);

author = pAuthor;

}
}

Nguyên tắc gọi hàm khởi tạo lớp cha:

– Nếu lớp cha có một hàm khởi tạo không có tham số thì hàm khởi tạo này của lớp
cha sẽ mặc định được gọi trong hàm khởi tạo của lớp con.

– Nếu lớp cha có duy nhất một hàm khởi tạo có tham số thì hàm super bắt buộc

phải được gọi tại lớp con.
Ví dụ:

54
Hình bên trái: Lớp con không có hàm khởi tạo nhưng thay vào đó hàm khởi tạo lớp
cha sẽ mặc định được gọi tại lớp con. Tuy nhiên khuyến nghị là nên có hàm khởi tạo tại
lớp con.

Hình giữa: Lớp cha có 2 hàm khởi tạo. Nếu hàm khởi tạo lớp con không có từ khóa
super thì hàm khởi tạo không tham số của lớp cha sẽ mặc định được gọi tại lớp con.

Hình bên phải: Lớp cha có 1 hàm khởi tạo có tham số. Do đó từ khóa super bắt buộc
phải được sử dụng trong hàm khởi tạo của lớp con. Từ khóa super được dùng trong một
số tình huống sau :

– Dùng trong phương thức khởi tạo của lớp con trong trường hợp hàm khởi tạo lớp
cha có tham số.

– Dùng để gọi biến của lớp cha. Ví dụ lớp cha và lớp con có biến count và cùng
kiểu int. Trong lớp con nếu chúng ta muốn sử dụng biến của lớp cha thì ta dùng
từ khóa super như sau : super.hunger.