Tin tổng hợp

Câu Hỏi Thường Bắt gặp Lúc Nào Sử dụng Abstract Và Interface Lúc Đã Sở hữu Abstract Class? – viettingame

InterfaceAbstract class là 2 luận điểm cơ bạn dạng trong lập trình OOP. Nhưng phân to mọi người cảm thấy mơ hồ và lẫn lộn 2 luận điểm này. Vậy chúng là gì, không giống nhau như nào? Tại vì sao sử dụng chiếc này Interface mà ko phải Abstract và ngược lại ???

So sánh abstract class và interface

Abstract class: là một class phụ thân cho toàn bộ những class sở hữu cùng thực chất. Thực chất ở trên đây được hiểu là kiểu, loại, trọng trách của class. Hai class cùng hiện thực một interface mà thậm chí trọn vẹn không giống nhau về thực chất. Hiểu giản dị như một thằng con (child class) chỉ mà thậm chí là con của một thằng phụ thân, sở hữu tính cách giống phụ thân (abstract class) nó.

Đang xem: Một khi sử dụng abstract và interface

Interface: là một tính năng mà các bạn mà thậm chí thêm và bất kì class nào. Từ tính năng ở trên đây ko đồng nghĩa với phương thức (hoặc hàm). Interface mà thậm chí bao hàm nhiều hàm/phương thức và toàn bộ chúng cùng phục vụ cho một tính năng.

Vậy, các bạn ko nên nhầm lẫn lúc nói về việc một class được implement hay extend. Nhiều người thường hay thống nhất là ko phân biệt hai từ này, nhưng chính chúng đã nói lên sự khác lạ giữa interface và abstract class. Chúng ta chỉ mà thậm chí thừa kế (extend) từ một classchỉ mà thậm chí hiện thực (implement) chức năng (interface) cho class của tôi.

Theo cách ngắn gọn, quan hệ giữa một class lúc thừa kế một abstract class được gọi là is-a, và một class lúc hiện thực một interface được gọi là can-do (hoặc –able).

Hãy xem ví dụ sau, tôi sở hữu:

Interface: Barkable, Runable, Flyable, Swimable.Abstract class Animal và những sub class: Bolt, AngryBird và Nemo.

Abstract class Machine và những sub class: McQueen, Siddeley.

*

Như các bạn thấy, tuy vậy cả McQueen và Bolt đều được hiện thực interface Runable, nhưng chúng trọn vẹn thuộc hai loại không giống nhau. Và tất nhiên một class mà thậm chí can-do nhiều thứ, ví dụ như Bolt mà thậm chí chạy và sủa.

*

Sử dụng Interface như một “bạn dạng thiết kế” của class? Trên đây là một điều thường được sử dụng để vấn đáp cho hai thắc mắc:

Interface được sử dụng để làm gì?Tại vì sao ko thể định nghĩa phần thân cho những phương thức của interface.

Xét ở một mức độ nào khác điều này là hợp lý, nhưng như đã nói ở phần trên, nó chỉ được sử dụng để mô tả một bạn dạng thiết kế cho một tính năng của class. Nếu muốn tạo một bạn dạng thiết kế tổng thể, hãy sử dụng abstract class. Một bạn dạng thiết kế tổng thể tất nhiên sẽ có được những thứ đã được dựng sẵn và sở hữu những thứ là abstract.

Xem thêm: Nghĩa Của Từ Intellect Là Gì ? Intellect Là Gì

Một câu vấn đáp mà thậm chí lý giải phần nào đó thắc mắc thứ hai là việc cho phép định nghĩa thân phương thức trong những interface mà thậm chí làm cho hiệu suất bị hạn chế sút. Nguyên nhân là việc tìm kiếm những phương thức sẽ ra mắt lâu hơn vì thế phải duyệt qua những interface, thay vì thế chỉ việc phải tìm trong class phụ thân của nó.

Về tác dụng của interface, xét ở mức ứng dụng, những interface mà thậm chí được hiểu như những plugin hoặc thư viện/ứng dụng third-party. Việc hiện thực một interface cho class tương tự như cài thêm plugin cho một ứng dụng vậy.

Bảng so sánh abstract class và interface để tìm hiểu một khi sử dụng chúng

Sau cuối, cũng nên liệt kê những điểm khác lạ giữa hai luận điểm này để các bạn mà thậm chí sử dụng được lúc quan trọng. Những điểm khác lạ này mà thậm chí không giống nhau tùy vào từ ngữ mà các bạn sử dụng. Vì như thế vậy các bạn chỉ việc nhớ những điểm căn bạn dạng sau:

InterfaceAbstract class
Multiple inheritance Một class mà thậm chí hiện thực nhiều interface.(tạm xem như là thừa kế) Ko hỗ trợ đa thừa kế
Default implementation Ko thể định nghĩa code xử lý, chỉ mà thậm chí khai báo. Thậm chí định nghĩa thân phương thức, property.
Access Modifiers Mọi phương thức, property đều mặc định là public. Thậm chí xác định modifier.
Adding functionality Mọi phương thức, property của interface rất cần phải hiện thực trong class.

Xem thêm: Ot4 Là Gì – Fan Kpop Cần Phải Biết Top 25 Thuật Ngữ Phổ Biến

Ko quan trọng.
Fields and Constants Ko Sở hữu

Về Viettingame.com

Viettingame.com - Chuyên trang web tổng hợp những thông tin hữu ích trên internet như thông tin về game, tin tổng hợp
Xem tất cả các bài viết của Viettingame.com →

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *