Triển khai vs Mở rộng
Implements và Extends là hai từ khóa được tìm thấy trong ngôn ngữ lập trình Java cung cấp phương tiện chuyển chức năng được thêm vào một lớp mới. Từ khóa Implements được sử dụng rõ ràng để thực hiện giao diện, trong khi từ khóa Extends được sử dụng để kế thừa từ một lớp (siêu). Xin lưu ý rằng các khái niệm kế thừa và giao diện có mặt trong hầu hết các ngôn ngữ lập trình hướng đối tượng khác như C # và VB.NET, nhưng chúng cung cấp các cú pháp hoặc từ khóa khác nhau để áp dụng các khái niệm đó. Bài viết này chỉ tập trung vào Thực hiện và Mở rộng các từ khóa được định nghĩa trong Java.
Mở rộng
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. Một lớp con không thể mở rộng nhiều siêu lớp 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 như được giải thích bên dưới.
Thực hiện
Từ khóa triển khai trong ngôn ngữ lập trình Java được sử dụng để triển khai giao diện bởi một lớp. Một giao diện trong Java là một kiểu trừu tượng được sử dụng để chỉ định một hợp đồng nên được thực hiện bởi các lớp, thực hiện giao diện đó. Thông thường một giao diện sẽ chỉ chứa chữ ký phương thức và khai báo không đổi. Bất kỳ giao diện nào thực hiện một giao diện cụ thể sẽ thực hiện tất cả các phương thức được định nghĩa trong giao diện hoặc nên được khai báo là một lớp trừu tượng. Trong Java, loại tham chiếu đối tượng có thể được định nghĩa là một loại giao diện. Nhưng đối tượng đó phải là null hoặc nên giữ một đối tượng của một lớp, thực hiện giao diện cụ thể đó. Sử dụng từ khóa Implements trong Java, bạn có thể triển khai nhiều giao diện cho một lớp. Một giao diện không thể thực hiện giao diện khác. Tuy nhiên, một giao diện có thể mở rộng một lớp.
Sự khác biệt giữa thực hiện và mở rộng
Mặc dù, Implements và Extends là hai từ khóa cung cấp một cơ chế để kế thừa các thuộc tính và hành vi cho một lớp trong ngôn ngữ lập trình Java, chúng được sử dụng cho hai mục đích khác nhau. Từ khóa triển khai được sử dụng cho một lớp để thực hiện một giao diện nhất định, trong khi từ khóa Extends được sử dụng cho một lớp con để mở rộng từ một siêu lớp. Khi một lớp thực hiện một giao diện, lớp đó cần thực hiện tất cả các phương thức được định nghĩa trong giao diện, nhưng khi một lớp con mở rộng một siêu lớp, nó có thể hoặc không ghi đè lên các phương thức có trong lớp cha. Cuối cùng, một điểm khác biệt quan trọng khác giữa Implements và Extends là, một lớp có thể thực hiện nhiều giao diện nhưng nó chỉ có thể mở rộng từ một siêu lớp trong Java. Nhìn chung, việc sử dụng Implements (giao diện) được coi là thuận lợi hơn so với việc sử dụng Extends (kế thừa), vì một số lý do như tính linh hoạt cao hơn và khả năng giảm thiểu khớp nối. Do đó, trong thực tế, lập trình cho một giao diện được ưu tiên hơn là mở rộng từ các lớp cơ sở.