Cách sử dụng tính kế thừa trong C#

Cach Su Dung Tinh Ke Thua Trong C



Trong khi viết mã bằng ngôn ngữ lập trình hướng đối tượng, chúng ta có thể gặp các tình huống cần sử dụng lại mã hiện có trong một lớp mới hoặc thêm chức năng bổ sung cho lớp hiện có. Trong những trường hợp như vậy, thừa kế có ích. Tính kế thừa trong lập trình hướng đối tượng cho phép các lớp kế thừa các thuộc tính và hành vi của lớp khác. Bài viết này đề cập đến việc sử dụng thừa kế trong C# và các kiểu khác nhau của nó.

Mục lục

Kế thừa trong C# là gì

Kế thừa hoạt động như thế nào trong C#







Các loại kế thừa trong C#



Phần kết luận



Kế thừa trong C# là gì

Trong C# sử dụng tính kế thừa, một lớp có thể lấy hoặc kế thừa các thuộc tính và phương thức của lớp khác. Nói cách khác, nó cho phép tạo ra một lớp mới dựa trên một lớp hiện có, được gọi là lớp cơ sở hoặc siêu lớp. Một lớp được hình thành sau khi lấy các thuộc tính của một lớp cơ sở được gọi là một lớp dẫn xuất hoặc phân lớp.





Lớp dẫn xuất này trong C# không chỉ lấy các thuộc tính của lớp cơ sở mà còn có thể thêm các tính năng độc đáo của riêng nó.

Kế thừa hoạt động như thế nào trong C#

Trong C#, tính kế thừa đạt được thông qua việc sử dụng dấu hai chấm (:) biểu tượng. Tên lớp cơ sở được định nghĩa sau dấu hai chấm và được chỉ định bởi lớp dẫn xuất.



Sau đây là cú pháp để tạo một lớp dẫn xuất lấy các thuộc tính từ lớp cơ sở:

lớp DerivedClass : Lớp cơ sở

{

// các thành viên của lớp dẫn xuất

}

Ở đây trong mã này, Lớp có nguồn gốc là tên của lớp dẫn xuất, và Lớp cơ sở là tên của lớp cơ sở. Các : biểu tượng chỉ ra rằng DerivedClass đang kế thừa từ BaseClass. Các thành viên của DerivedClass có thể truy cập các thành viên BaseClass, miễn là chúng không riêng tư.

Các loại kế thừa trong C#

C# hỗ trợ bốn loại kế thừa: đơn, đa cấp, phân cấp và đa kế thừa. Hãy xem xét từng loại.

Thừa kế đơn

Kế thừa đơn là kiểu kế thừa phổ biến nhất, trong đó một lớp dẫn xuất lấy hoặc kế thừa các thuộc tính của chỉ một lớp cơ sở duy nhất.

Ví dụ, mã đã cho giải thích hệ thống phân cấp lớp và thể hiện các khái niệm kế thừa.

sử dụng Hệ thống ;

sử dụng Hệ thống ;
hạng xe
{
công cộng khoảng trống Bắt đầu ( )
{
Bảng điều khiển. ViếtDòng ( 'Xe bắt đầu' ) ;
}
}
lớp Tesla : Xe hơi
{
công cộng khoảng trống Thúc giục ( )
{
Bảng điều khiển. ViếtDòng ( 'Tesla tăng tốc' ) ;
}
}
chương trình lớp học
{
tĩnh khoảng trống Chủ yếu ( sợi dây [ ] tranh luận )
{
Tesla myTesla = Tesla mới ( ) ;
myTesla. Bắt đầu ( ) ; // Đầu ra: Xe bắt đầu
myTesla. Thúc giục ( ) ; // Đầu ra: Tesla tăng tốc
}
}

Trong đoạn mã trên, hạng xe là lớp cơ sở và có một phương thức gọi là Bắt đầu() , chỉ cần in thông báo xe bắt đầu đến bàn điều khiển.

Các lớp Tesla được dẫn xuất từ ​​lớp Car và nó nhận tất cả các thuộc tính của lớp Car. Lớp Tesla thêm một phương thức gọi là Thúc giục() , sẽ in thông báo Tesla tăng tốc đến bàn điều khiển.

Các Chủ yếu() hàm định nghĩa một thể hiện của lớp Tesla được gọi là myTesla và gọi các phương thức Start() và Accelerate() của nó.

Kế thừa đa cấp

Kế thừa đa cấp là nơi một lớp dẫn xuất kế thừa từ một lớp dẫn xuất khác, lớp dẫn xuất này lại kế thừa từ một lớp cơ sở.

Ví dụ, mã C# sau thể hiện tính kế thừa và ghi đè phương thức trong hệ thống phân cấp lớp.

sử dụng Hệ thống ;
lớp Động vật
{
công cộng khoảng trống Ăn ( )
{
Bảng điều khiển. ViếtDòng ( 'Động vật ăn thịt' ) ;
}
}
lớp động vật có vú : Động vật
{
công cộng khoảng trống Chạy ( )
{
Bảng điều khiển. ViếtDòng ( 'Động vật có vú chạy' ) ;
}
}
lớp Chó : động vật có vú
{
công cộng khoảng trống vỏ cây ( )
{
Bảng điều khiển. ViếtDòng ( 'Chó sủa' ) ;
}
}
chương trình lớp học
{
tĩnh khoảng trống Chủ yếu ( sợi dây [ ] tranh luận )
{
Con chó của tôiCon chó của tôi = chú chó mới ( ) ;
con chó của tôi. Ăn ( ) ; // Đầu ra: Động vật ăn thịt
con chó của tôi. Chạy ( ) ; // Đầu ra: Động vật có vú đang chạy
con chó của tôi. vỏ cây ( ) ; // Đầu ra: Tiếng chó sủa
}
}

Đây Chó là lớp dẫn xuất kế thừa từ động vật có vú , do đó kế thừa từ Động vật . Lớp Dog có quyền truy cập vào tất cả các thuộc tính, phương thức và hành vi của Động vật có vú và Động vật, đồng thời có thể định nghĩa phương thức duy nhất của riêng mình vỏ cây() .

Các lớp thú là lớp cơ sở và có một phương thức gọi là Ăn() , chỉ cần in thông báo Động vật đang ăn ra bảng điều khiển.

Các lớp thú được bắt nguồn từ lớp Animal và thêm một phương thức gọi là Chạy() , sẽ in thông báo Động vật có vú đang chạy ra bàn điều khiển.

Các lớp chó được bắt nguồn từ lớp Động vật có vú và thêm một phương thức gọi là vỏ cây() , in thông báo Tiếng chó sủa ra bàn điều khiển.

Phương thức Main() tạo một thể hiện của lớp Dog được gọi là con chó của tôi và gọi các phương thức Eat(), Run() và Bark() của nó.

Lưu ý rằng các phương thức Eat() và Run() không được định nghĩa trong lớp Dog, nhưng được kế thừa từ các lớp cha của nó Động vật động vật có vú , tương ứng. Các vỏ cây() phương thức chỉ được định nghĩa trong lớp Dog.

  Chữ
Mô tả được tạo tự động

Kế thừa phân cấp

Trong kế thừa Hierarchical, số lượng khác nhau của các lớp dẫn xuất chỉ được kế thừa từ một lớp cơ sở. Ví dụ:

sử dụng Hệ thống ;
lớp học
{
công cộng khoảng trống Vẽ tranh ( )
{
Bảng điều khiển. ViếtDòng ( 'Vẽ hình' ) ;
}
}
vòng tròn lớp học : Hình dạng
{
công cộng khoảng trống Đổ đầy ( )
{
Bảng điều khiển. ViếtDòng ( 'Vòng tròn lấp đầy' ) ;
}
}
lớp vuông : Hình dạng
{
công cộng khoảng trống Màu sắc ( )
{
Bảng điều khiển. ViếtDòng ( 'Tô màu hình vuông' ) ;
}
}
chương trình lớp học
{
tĩnh khoảng trống Chủ yếu ( sợi dây [ ] tranh luận )
{
Vòng tròn vòng tròn của tôi = vòng kết nối mới ( ) ;
myCircle. Vẽ tranh ( ) ; // Đầu ra: Hình vẽ
myCircle. Đổ đầy ( ) ; // Đầu ra: Điền vào hình tròn

Quảng trường mySquare = quảng trường mới ( ) ;
mySquare. Vẽ tranh ( ) ; // Đầu ra: Hình vẽ
mySquare. Màu sắc ( ) ; // Đầu ra: Tô màu hình vuông
}
}

Trong đoạn mã trên, cả hai Vòng tròn Quảng trường là các lớp dẫn xuất kế thừa từ Hình dạng . Họ có quyền truy cập vào phương thức Draw() được xác định trong Shape và cũng có thể xác định các phương thức duy nhất của riêng họ là Fill() và Color().

Ở đây chúng ta đã tạo một đối tượng của lớp Circle có tên myCircle và một đối tượng của Quảng trường lớp có tên mySquare . Sau đó chúng tôi gọi Vẽ tranh() phương thức được kế thừa từ lớp Shape trên cả hai đối tượng.

Tiếp theo, chúng tôi gọi Đổ đầy() phương thức trên myCircle, dành riêng cho lớp Circle và Màu sắc() phương thức trên mySquare, dành riêng cho lớp hình vuông.

Đầu ra sẽ được in ra bàn điều khiển như sau:

  Chữ
Mô tả được tạo tự động với độ tin cậy trung bình

Đa thừa kế

Đa kế thừa là nơi một lớp dẫn xuất kế thừa từ nhiều lớp cơ sở. Tuy nhiên, C# không hỗ trợ đa kế thừa. Để đạt được chức năng tương tự, C# sử dụng giao diện .

Phần kết luận

Kế thừa trong C# cho phép các lớp kế thừa hành vi và chức năng từ các lớp cơ sở. Sử dụng tính kế thừa, chúng ta có thể sử dụng lại mã và tạo luồng phân cấp bên trong chương trình. Bằng cách hiểu các loại kế thừa khác nhau, người ta có thể viết mã hiệu quả hơn và có tổ chức hơn, dễ bảo trì và mở rộng hơn.