Interface trong Lập trình hướng đối tượng

Lập trình OOP với C#

4.9 (25 đánh giá)
Tạo bởi Kteam Cập nhật lần cuối 22:20 23-07-2020 139.314 lượt xem 9 bình luận
Tác giả/Dịch giả: Kteam
Học nhanh

Danh sách bài học

Interface trong Lập trình hướng đối tượng

Dẫn nhập

Ở các bài học trước, chúng ta đã cùng nhau tìm hiểu về ĐA HÌNH TRONG OOP C#. Hôm nay chúng ta sẽ cùng tìm hiểu về Interface trong C#.


Nội dung

Để đọc hiểu bài này tốt nhất các bạn nên có kiến thức cơ bản về các phần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Interface là gì? Tại sao lại sử dụng interface.
  • Khai báo và sử dụng interface.
  • So sánh giữa interface abstract class.

Interface là gì? Tại sao lại sử dụng interface

Interface (nhiều tài liệu gọi là giao diện hoặc lớp giao tiếp) là 1 tập các thành phần chỉ có khai báo mà không có phần định nghĩa (giống phương thức thuần ảo đã trình bày ở bài ĐA HÌNH TRONG C#).

Các thành phần này có thể là:

Một interface được hiểu như là 1 khuôn mẫu mà mọi lớp thực thi nó đều phải tuân theo. Interface sẽ định nghĩa phần “làm gì” (khai báo) và những lớp thực thi interface này sẽ định nghĩa phần “làm như thế nào” (định nghĩa nội dung) tương ứng.

Đặc điểm của interface

  • Chỉ chứa khai báo không chứa phần định nghĩa (giống phương thức thuần ảo). Mặc dù giống phương thức thuần ảo nhưng bạn không cần phải khai báo từ khoá abstract.
  • Việc ghi đè 1 thành phần trong interface cũng không cần từ khoá override.
  • Không thể khai báo phạm vi truy cập cho các thành phần bên trong interface. Các thành phần này sẽ mặc định là public.
  • Interface không chứa các thuộc tính (các biến) dù là hằng số hay biến tĩnh vẫn không được.
  • Interface không có constructor cũng không có destructor.
  • Các lớp có thể thực thi nhiều interface cùng lúc (ở 1 góc độ nào đó có thể nó là phương án thay thế đa kế thừa).
  • Một interface có thể kế thừa nhiều interface khác nhưng không thể kế thừa bất kỳ lớp nào.

Mục đích sử dụng interface

  • Vì C# không hỗ trợ đa kế thừa nên interface ra đời như là 1 giải pháp cho việc đa kế thừa này.
  • Trong 1 hệ thống việc trao đổi thông tin giữa các thành phần cần được đồng bộ và có những thống nhất chung. Vì thế dùng interface sẽ giúp đưa ra những quy tắc chung mà bắt buộc các thành phần trong hệ thống này phải làm theo mới có thể trao đổi với nhau được.

Khai báo và sử dụng interface

Cú pháp:

interface <tên interface>

    {

        // Khai báo các thành phần bên trong interface

    }

Trong đó:

  • Interface là từ khoá dùng để khai báo 1 interface.
  • <tên interface> là tên do người dùng đặt và tuân theo các quy tắc đặt tên đã trình bày trong bài BIẾN TRONG C#.
    •  Lưu ý là để tránh nhầm lẫn với lớp kế thừa thì khi đặt tên interface người ta thường thêm tiền tố “I” để nhận dạng.

Việc thực thi 1 interface hoàn toàn giống kế thừa từ 1 lớp (đã trình bày trong bài KẾ THỪA TRONG C#).

Ví dụ:

interface ISpeak
    {
        /*
            Khai báo phương thức nhưng không định nghĩa nội dung
         */
        void Speak();
    }

    class Animal : ISpeak // lớp Animal thực thi interface ISpeak
    {
        /*
            Định nghĩa nội dung cho phương thức trong interface
	Phương thức Speak() phải có phạm vi là public vì phương thức Speak() trong interface mặc định là public rồi.
         */
        public void Speak()
        {
            Console.WriteLine("Animal is speaking. . ."); 
        }
    }

Trong hàm main ta thử phương thức Speak() xem có chạy được không:

Animal animal = new Animal();

animal.Speak();

Kết quả khi chạy chương trình:

Interface trong Lập trình hướng đối tượng

Vì việc thực thi interface rất giống với kế thừa nên ta hoàn toàn có thể sử dụng câu lệnh sau:

ISpeak animal = new Animal();

Khi đó chạy lại chương trình vẫn ra kết quả như ban đầu.

Việc thiết kế, sử dụng interface abstract class chính là cách thể hiện tính trừu tượng trong lập trình hướng đối tượng.

Lưu ý: bạn phải định nghĩa nội dung cho tất cả thành phần trong interface.


So sánh giữa interface và lớp trừu tượng

Những điểm giống nhau giữa interface abstract class:

  • Đều có thể chứa phương thức thuần ảo.
  • Đều không thể khởi tạo đối tượng.

Những điểm khác nhau:

Interface trong Lập trình hướng đối tượng


Kết luận

Nội dung bài này giúp các bạn nắm được:

  • Interface là gì? Tại sao lại sử dụng interface.
  • Khai báo và sử dụng interface.
  • So sánh giữa interface abstract class.

Như vậy chúng ta đã kết thúc series LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C#”. Các bạn hãy ôn lại những gì đã học để chuẩn bị bước sang series kế tiếp LẬP TRÌNH C# NÂNG CAO nào!

Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Interface trong Lập trình hướng đối tượng dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Khóa học

Lập trình OOP với C#

Lập trình OOP với C#. Lập trình hướng đối tượng với C#

Đánh giá

Ryanhoccode đã đánh giá 09:45 29-06-2024

Ngô Đạt đã đánh giá 11:13 10-10-2023

thanh tâm lê đã đánh giá 13:23 12-05-2023

Bùi Nam đã đánh giá 15:44 20-01-2023

tuyệt vời

Vo Tan Duc đã đánh giá 11:04 22-12-2022

Cái này cũng sử dụng nhiều lắm nha, nhất là trong việc tạo ra các dll

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
thebao0402@gmail.com đã bình luận 10:50 20-08-2021

Cám ơn HowKteam rất nhiều! Cách diễn đạt nội dung rất hay, ngắn gọn và có phần hài hước, dễ hiểu. Rất ấn tương với các nội dung chia sẽ miễn phí mà vẫn đầy nhiệt huyệt như vậy.

Đã donated mời anh em ly cf.

IvanOoze đã bình luận 20:30 24-05-2021

Mình không thấy phần này trong phần lập trình nâng cao, ad bổ sung nhé :

falcon99k đã bình luận 15:22 04-04-2020

Em đã học xong C# cơ bản, giờ xong luôn OOP rồi thì tiếp theo phải học gì vậy ạ?

lamtruyen đã bình luận 16:05 12-11-2019

add oi không có bài học về event jay

RDITSC đã bình luận 11:49 09-07-2019

cái này có giống bên c ++ không vạy ad

Không có video.