Main content:
      An introduction to inheritance
      Basic skills for working with inheritance
      The Product application
      More skills for working with inheritance
      How to work with the abstract and final keywords
    ----
1. An introduction to inheritance
Cú pháp:
<Tên lớp con> extends <Tên lớp cha> {
        // Các thuộc tính dữ liệu bổ sung
        // Các hàm thành phần bổ sung hay viết đè
}
Ví dụ:

Code:
public class Kethua {
       public static void main(String[] args) {
              ConNguoi connguoi = new ConNguoi("Nguyen Van A", "Nam");
              connguoi.Print();
              SinhVien sinhvien = new SinhVien("Nguyen X", "Nam", 1000, "02T3");
              sinhvien.Print();
       }
}

class ConNguoi {
       public String hoten;
       public String gioitinh;

       public ConNguoi() {
      
       }
      
       public ConNguoi(String _hoten, String _gioitinh) {
              this.hoten = _hoten;
              this.gioitinh = _gioitinh;                     
       }
      
       public void Print () {
              System.out.println(hoten + ", " + gioitinh);
       }
}

class SinhVien extends ConNguoi {
       public int masinhvien;
       public String malop;
      
       public SinhVien() {
             
       }
      
       public SinhVien(String _hoten, String _gioitinh, int _masinhvien, String _malop) {
              super(_hoten, _gioitinh);
              this.masinhvien = _masinhvien;
              this.malop = _malop;
       }
      
       public void Print () {
              super.Print();
              System.out.println(masinhvien + ", " + malop);
       }
}

2. Basic skills for working with inheritance
- Phạm vi truy cập được chia thành 4 nhóm: truy cập từ cùng lớp, truy cập từ cùng gói, truy cập từ một lớp con, truy cập từ một gói khác:



Ví dụCho hình sau, hãy xét tính truy cập đúng hay sai của các câu lệnh từ (9) đến (28) và  giải thích tại sao ?


3. The Product application



4. More skills for working with inheritance


5. How to work with the abstract and final keywords
 - Từ khóa final:
  + Biến final được xem như la hằng, giá trị của nó sẽ không thay đổi được ngay sau khi đã được khởi tạo
  + Các hàm khai báo fiinal ở trong lớp là đầy đủ và không thể viết đè ở các lớp con của lớp đó --> không thay đổi được.
  + Các biến final static được sử dụng như các hằng tư tự như từ khóa const của C.

 - Từ khóa abstract:
  + Hàm trừu tượng
      abstract <kiểu trả lại> <tên hàm> ([<danh sách các biến>]) [<Mệnh đề throws>];
      . Hàm abstract là hàm prototype, chỉ khai báo phần định danh hàm mà không định nghĩa nội dung thực hiện, do đó nó là hàm không đầy đủ.

      . Hàm abstract thường chỉ tổ chức cho các lớp abstract và các hàm này được cài đặt nội dung thực hiện ở trong các lớp con cháu của lớp chứa hàm đó.
  Lớp trừu tượng:
     . Lớp trừu tượng chỉ được dùng làm lớp cha cho các lớp khác, nó không có các thể hiện (instance).
     . Lớp trừu tượng định nghĩa các thuộc tính chung cho các lớp con của nó.
     . Lớp abstract phải có một hàm abstract. Khi khai báo một hàm abstract thì nó phải nằm trong một lớp abstract

     . Ví dụ có thể thiết kế lớp Hình tròn, Hình vuông... kế thừa từ lớp trừu tượng Hình. Lớp Hình có thuộc tính là tên hình, các phương thức tính diện tích, chu vi...
Ví dụ: Xây dựng lớp như hình sau
Mã nguồn:


Bài tập:
1.

2.

3.


4.


5.