6.2.1 Tương thích kiểu – trường hợp đơn giản nhất

Mỗi class được tạo ra sẽ là một kiểu dữ liệu mới. Mỗi đối tượng được xây dựng trên cơ sở của một class thì giống như một giá trị của kiểu mới đó. Điều này có nghĩa là bất kỳ hai đối tượng nào đều có thể tương thích hoặc không tương thích với nhau về kiểu.

Hãy xem ví dụ rất đơn giản →

Các đối tượng của lớp Cat không tương thích với các đối tượng của lớp Dog, mặc dù cấu trúc của hai lớp là giống hệt nhau. Các lệnh gán sau đâu là không hợp lệ và sẽ gây ra lỗi biên dịch:

a_dog = a_cat;
a_cat = a_dog;

Như bạn thấy, các lớp Dog và Cat không có điểm chung nào về thừa kế – chúng hoàn toàn độc lập với nhau. Vì vậy, chúng ta có thể nói rằng các đối tượng xuất phát từ các lớp nằm trong các nhánh khác nhau của cây thừa kế luôn luôn không tương thích.

Chương trình sẽ tạo ra kết quả sau:

Meow! Meow!

Woof! Woof!