Lớp trừu tượng vs Kế thừa
Lớp trừu tượng và Kế thừa là hai khái niệm hướng đối tượng quan trọng được tìm thấy trong nhiều ngôn ngữ lập trình hướng đối tượng như Java. Lớp trừu tượng có thể được coi là một phiên bản trừu tượng của lớp thông thường (cụ thể), trong khi Kế thừa cho phép các lớp mới mở rộng các lớp khác. Lớp trừu tượng là một lớp không thể được khởi tạo nhưng có thể được mở rộng. Vì vậy, các lớp Trừu tượng chỉ có ý nghĩa nếu ngôn ngữ lập trình hỗ trợ kế thừa. Trong Java, các lớp Trừu tượng được khai báo bằng Từ khóa trừu tượng, trong khi Từ khóa mở rộng được sử dụng để kế thừa từ một lớp (siêu).
Lớp trừu tượng là gì?
Thông thường, các lớp Trừu tượng, còn được gọi là Các lớp cơ sở trừu tượng (ABC), không thể được khởi tạo (một thể hiện của lớp đó không thể được tạo). Vì vậy, các lớp Trừu tượng chỉ có ý nghĩa nếu ngôn ngữ lập trình hỗ trợ kế thừa (khả năng tạo các lớp con từ việc mở rộng một lớp). Các lớp trừu tượng thường đại diện cho một khái niệm hoặc thực thể trừu tượng với một phần hoặc không thực hiện. Do đó, các lớp Trừu tượng đóng vai trò là các lớp cha mà từ đó các lớp con được dẫn xuất để lớp con sẽ chia sẻ các tính năng chưa hoàn chỉnh của lớp cha và chức năng có thể được thêm vào để hoàn thành chúng.
Các lớp trừu tượng có thể chứa các phương thức Trừu tượng. Các lớp con mở rộng một lớp trừu tượng có thể thực hiện các phương thức Trừu tượng (được kế thừa) này. Nếu lớp con thực hiện tất cả các phương thức Trừu tượng như vậy, thì đó là một lớp cụ thể. Nhưng nếu không, lớp con cũng trở thành lớp Trừu tượng. Tất cả điều này có nghĩa là, khi lập trình viên chỉ định một lớp là Tóm tắt, cô ấy nói rằng lớp đó sẽ không hoàn chỉnh và nó sẽ có các phần tử cần được hoàn thành bởi các lớp con kế thừa. Đây là một cách hay để tạo hợp đồng giữa hai lập trình viên, giúp đơn giản hóa các nhiệm vụ trong phát triển phần mềm. Lập trình viên, người viết mã để kế thừa, cần tuân theo chính xác các định nghĩa phương thức (nhưng tất nhiên có thể có cách thực hiện của riêng cô ấy).
Kế thừa là gì?
Kế thừa là một khái niệm hướng đối tượng, cho phép các lớp mới mở rộng các lớp khác. Từ khóa mở rộng được sử dụng để thực hiện khái niệm kế thừa trong ngôn ngữ lập trình Java. Kế thừa về cơ bản cung cấp việc tái sử dụng mã bằng cách cho phép mở rộng các thuộc tính và hành vi của một lớp hiện có bởi một lớp mới được định nghĩa. Khi một lớp con mới (hoặc lớp dẫn xuất) mở rộng một siêu lớp (hoặc lớp cha), lớp con đó sẽ kế thừa tất cả các thuộc tính và phương thức của siêu lớp. Lớp con có thể tùy ý ghi đè hành vi (cung cấp chức năng mới hoặc mở rộng cho các phương thức) được kế thừa từ lớp cha. Thông thường, Một lớp con không thể mở rộng nhiều siêu lớp (ví dụ: trong Java). Do đó, bạn không thể sử dụng mở rộng cho nhiều kế thừa. Để có nhiều kế thừa, bạn cần sử dụng các giao diện.
Sự khác biệt giữa lớp trừu tượng và kế thừa?
Các lớp trừu tượng thường đại diện cho một khái niệm trừu tượng hoặc một thực thể có một phần hoặc không thực hiện. Kế thừa cho phép các lớp mới mở rộng các lớp khác. Bởi vì, các lớp Trừu tượng không thể được khởi tạo, bạn cần sử dụng khái niệm kế thừa để sử dụng các lớp Trừu tượng. Mặt khác, một lớp Trừu tượng không có sử dụng. Các lớp trừu tượng có thể chứa các phương thức Trừu tượng và khi lớp được mở rộng, tất cả các phương thức (Trừu tượng và cụ thể) được kế thừa. Lớp kế thừa có thể thực hiện bất kỳ hoặc tất cả các phương thức. Nếu tất cả các phương thức Trừu tượng không được triển khai, thì lớp đó cũng trở thành một lớp Trừu tượng. Một lớp không thể kế thừa từ nhiều hơn một lớp Trừu tượng (đây không phải là chất lượng của các lớp Trừu tượng mỗi se, mà là hạn chế thừa kế).