Một trong những cơ chế để sử dụng lại được các đoạn chương trình trong lập trình hướng đối tượng là cơ chế kế thừa. Từ một lớp được xây dựng tốt, ta có thể dẫn xuất ra nhiều lớp mới nhiều kiểu mới( được gọi là lớp con, lớp dẫn xuất, hay lớp kế thừa). Lớp cơ sở được gọi là lớp cha. Lớp con có thể được bổ xung thêm một số tính chất, hành vi của những đối tượng cụ thể hoặc thay đổi các hàm được kế thừa từ lớp cha.
Java chỉ hỗ trợ kế thừa đơn hay một lớp chỉ được kế thừa từ một lớp cha. VD:
Cú pháp kế thừa
<Tên lớp con> extends <Tên lớp cha> { // các thuộc tính dữ liệu bổ xung
//Các hàm thành phần bổ xung hay viết đè }
Mọi lớp của Java đều là lớp con cháu mặc định của Object.
Java.lang.Object
BongDen NhaKho
39 Hình H4-6 Quan hệ kế thừa giữa các lớp
Chú ý:
Mọi đối tượng của lớp con cũng sẽ là đối tượng thuộc lớp cha. Do vậy việc gán một đối tượng của lớp con sang cho biến tham chiếu đối tượng của lớp cha là sự mở rộng kiểu và do đó không cần ép kiểu.
Ngược lại gán một đối tượng của lớp cha cho biến tham chiếu đối tượng thuộc lớp con sẽ phải thực hiện ép kiểu. Lưu ý khi đó sẽ có thể bị tổn thất thông tin. Ví dụ,
class SuperClass { /* ... */ } class SubClass { /* ... */ } class UserClass {
//
public static main(String args[]){
SuperClass super1 = new SuperClass();// Tạo ra đối tượng lớp cha SubClass sub1 = super1; // Mở rộng kiểu
SuperClass super2 = (SubClass) sub1; // Thu hẹp kiểu nên phải ép kiểu }