Header Ads

Lập Trình Hướng Đối Tượng Trong Java Bài 6: Tính Kế Thừa (Inheritance) Trong Java

1. Khái niệm

Tính kế thừa trong Java là môt kỹ thuật mà trong đó một đối tượng con có được tất cả thuộc tính và hành vi của đối tượng cha. Trong Java, một lớp mà được kế thừa được gọi là một lớp cha. Lớp mới được gọi là lớp con.
Cú pháp:
class ten_lop_con extends ten_lop_cha  
{  
   //cac phuong thuc va cac truong  
} 

2. Các đặc điểm của lớp con

-  Sử dụng từ khóa extends để tạo ra lớp con
-  Một lớp con chỉ có thể kế thừa trực tiếp từ một lớp cha
- Nếu lớp con không kế thừa từ lớp cha nào hết, mặc định xem như nó kế thừa từ lớp cha tên là object
- Lớp con chỉ có thể truy cập những thành phần có đặc tả non-private và có thể định nghĩa những thành phần riêng
- Phương thức khởi tạo không được kế thừa

3. Các từ khóa/ tiền tố hỗ trợ

public: lớp có thể truy cập từ các gói, chương trình khác.
final: Lớp hằng, lớp không thể tạo dẫn xuất (không thể có con), hay đôi khi người ta gọi là lớp “vô sinh”.
abstract: Lớp trừu tượng (không có khai báo các thànhphần và các phương thức trong lớp trừu tượng). Lớp con sẽ khai báo, cài đặt cụ thể các thuộc tính, phương thức của lớp trừu tượng.

4. Ví dụ:

Tạo 3 class gồm các thuộc tính tương ứng:
Class "nhân sự" gồm: họ tên, năm sinh, quê quán.
Class "học sinh" gồm: họ tên, năm sinh, quê quán, điểm trung bình.
Class "giáo viên" gồm: họ tên, năm sinh, quê quán, lương hàng tháng.

Như vậy, nếu như chúng ta không sử dụng tính kế thừa thì sẽ xảy ra tình trạng lặp code, nghĩa là khi khai báo 2 lớp "học sinh" và "giáo viên" sẽ khai báo lại các thuộc tính họ tên, năm sinh, quê quán
Để sử dụng tính kế thừa, ta chỉ cần khai báo lớp "nhân sự", sau đó 2 lớp còn lại ta kế thừa từ lớp "nhân sự" , thiếu thuộc tính, phương thức nào thì sẽ bổ sung vào lớp đó.

Code mẫu: 
class NhanSu {

    public String hoTen;
    public int namSinh;
    public String queQuan;
}
class HocSinh extends NhanSu{
    public float diemTb;
}
class GiaoVien extends NhanSu{
    public int luong;
}

public class Hocjava {

    public static void main(String[] args) {
        NhanSu ns = new NhanSu();
        ns.hoTen = "Nhân Sự A";
        ns.namSinh = 1990;
        ns.queQuan = "Hải Dương";

        HocSinh hs = new HocSinh();

        /* Đối tượng tạo ra từ lớp "học sinh" kế thừa, sử dụng các thuộc tính 
        của lớp "nhân sự"*/
        hs.hoTen = "Vũ Văn A";       
        hs.namSinh = 1992;
        hs.queQuan = "Hải Dương";
        hs.diemTb = 9.5f;
        /* Đối tượng tạo ra từ lớp "giáo viên" kế thừa, sử dụng các thuộc tính 
        của lớp "nhân sự"*/
        gv.namSinh = 1980;
        GiaoVien gv = new GiaoVien();
        gv.hoTen = "Nguyễn Văn B";    
        gv.queQuan = "Hà Nội";
        gv.luong = 300000000;
    }
}

1 nhận xét:

Được tạo bởi Blogger.