CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Tính thừa kế trong C#

Các bạn thân mến, như chúng ta đã biết c# là ngôn ngữ lập trình hướng đối tượng. Trong bài này và những bài tiếp theo chúng ta sẽ cùng tìm hiểu 4 tính chất hướng đối tượng quan trọng nhất đó là tính thừa kế (inheritance), đa hình (Polymorphism), đóng gói (encapsulation), trừu tượng (abstraction). 

Trong bài học hôm nay chúng ta sẽ cùng tìm hiểu về tính thừa kế (inheritance) trong C# là gì? Và sẽ có những ví dụ để làm rõ tính thừa kế trong C# cho các bạn dễ hiểu

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Tính thừa kế (inheritance)

Trong C#, thừa kế là một quá trình trong đó một đối tượng có được tất cả các thuộc tính và hành vi của đối tượng cha của nó một cách tự động. Theo cách đó, chúng ta có thể sử dụng lại, mở rộng hoặc sửa đổi các thuộc tính và hành vi đã được định nghĩa trong một lớp khác.

Trong C#, lớp kế thừa các thành viên của lớp khác được gọi là lớp dẫn xuất (derived) và lớp có các thành viên được kế thừa được gọi là lớp cơ sở (base). Lớp dẫn xuất là lớp chuyên biệt cho lớp cơ sở.

Cú pháp
derived_class : base_class {

}

Ưu điểm của thừa kế là có thể sử dụng lại các thành viên của lớp cha mà không cần phải định nghĩa lại thành viên lần nữa. Vì vậy, chương trình chúng ta sẽ ít code hơn.

2. Ví dụ

Trong c# có nhiều loại thừa kế được hỗ trợ như thừa kế đơn (Single Inheritance), thừa kế đa cấp độ (Single Inheritance), thừa kế phân cấp (Hierarchical Inheritance). Chúng ta cùng tìm hiểu từng loại thừa kế một nhé.

Single Inheritance

Single Inheritance nghĩa là một lớp chỉ kế thừa từ một lớp cha. Như hình dưới đây:

a PNG

Ví dụ
using System;
namespace ConsoleApp1
{
    public class NhanVien
    {
        public long luong = 2000000000;
    }

    public class KeToan: NhanVien
    {
        public long tienThuong = 5000000;
    }

    class Program
    {
        public static void Main(string[] args)
        {
            KeToan kt = new KeToan();

            Console.WriteLine("Luong: " + kt.luong);
            Console.WriteLine("Tien Thuong: " + kt.tienThuong);
            Console.ReadKey();
        }
    }
}

Và kết quả sau khi thực thi đoạn code trên:

b PNG

Multilevel Inheritance

Multilevel Inheritance nghĩa là một lớp kế thừa từ một lớp cha, mà lớp cha đó lại kế thừa từ một lớp khác. Như hình dưới đây:

c PNG

Ví dụ
using System;
namespace ConsoleApp1
{
    public class DongVat
    {
        public string mauSac;
        public string tiengKeu;
    }

    public class Cho : DongVat
    {
        public void TiengKeu()
        {
            tiengKeu = "gau gau";
            Console.WriteLine("Con cho keu: " + tiengKeu);
        }
    }

    public class ChoCon : Cho
    {
        public void TiengKeuChoCon()
        {
            TiengKeu();
            tiengKeu = "e e";
            Console.WriteLine("Con cho con keu: " + tiengKeu);
        }
    }

    class Program
    {
        public static void Main(string[] args)
        {
            ChoCon cc = new ChoCon();
            cc.TiengKeuChoCon();
            Console.ReadKey();
        }
    }
}

Như vậy lớp con không chỉ có tất cả thuộc tính và hành vi của lớp cha trực tiếp của nó mà nó còn thừa kế tất cả thuộc tính và hành vi của lớp cha của lớp cha ở trên nữa. Giống như con không những thừa kế tài sản từ cha mà còn từ ông nội, ông cố, ông sơ... :)

Hierarchical Inheritance

Hierarchical Inheritance nghĩa là một lớp có nhiều lớp con hay nói cách khác là có nhiều lớp cùng thừa kế từ một lớp cha. Như hình dưới đây:

d PNG

Ví dụ
using System;
namespace ConsoleApp1
{
    public class NhanVien
    {
        public long luong = 20000000000;
    }
    public class KeToan : NhanVien
    {
        public long hoaHong = 200000;
    }
    public class LapTrinhVien : NhanVien
    {
        public long hoaHong = 500000;
    }
    public class QuanTriVien : NhanVien
    {
        public long hoaHong = 800000;
    }
    class Program
    {
        public static void Main(string[] args)
        {
            KeToan kt = new KeToan();
            Console.WriteLine("Luong ke toan: " + kt.luong);
            Console.WriteLine("Hoa hong ke toan: " + kt.hoaHong);

            LapTrinhVien ltv = new LapTrinhVien();
            Console.WriteLine("\nLuong lap trinh vien: " + ltv.luong);
            Console.WriteLine("Hoa hong lap trinh vien: " + ltv.hoaHong);

            QuanTriVien qtv = new QuanTriVien();
            Console.WriteLine("\nLuong quan tri Vien: " + qtv.luong);
            Console.WriteLine("Hoa hong quan tri vien: " + qtv.hoaHong);
            Console.ReadKey();

        }
    }
}

Và kết quả sau khi thực thi đoạn code trên:

e PNG

Ngoài ra còn có loại thừa kế như đa thừa kế (Multiple Inheritance) và thừa kế hổn hợp (Hybrid Inheritance) không được hỗ trợ trong ngôn ngữ lập trình c# (đối với lớp)

Mặc dù không được hỗ trợ trong c# chúng ta cũng nên tìm hiểu sơ nó là gì nhé :)

Multiple Inheritance

Multiple Inheritance nghĩa là một lớp thừa kế nhiều hơn một lớp cha. C# không hỗ trợ đa kế thừa với các lớp. Trong C#, chúng ta chỉ có thể đạt được đa kế thừa thông qua giao diện (interface). Interface là gì và làm sao để thực hiện đa thừa kế thông qua interface chúng ta sẽ tìm hiểu trong một bài khác.

Chúng ta xem hinh dưới đây:

f PNG

Hybrid Inheritance

Hybrid Inheritance là hỗn hợp từ nhiều loại thừa kế kể trên. Vì C# không hỗ trợ đa kế thừa với các lớp, nên Hybrid Inheritance cũng không thể thực hiện được với các lớp. Trong C#, chúng ta chỉ có thể đạt được Hybrid Inheritance thông qua giao diện (interface)

Như hình dưới đây:

h PNG

3. Lời kết

Như vậy là chúng ta đã tìm hiểu xong về tính kế thừa trong c#

Chúc các bạn hiểu và vận dụng tốt.

Cùng chuyên mục:

Cách dùng Stack (ngắn xếp) trong C#

Cách dùng Stack (ngắn xếp) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính và phương thức của Stack…

Cách dùng Queue (hàng đợi) trong C#

Cách dùng Queue (hàng đợi) trong C#

Mình sẽ giới thiệu về các đặc điểm, thuộc tính, phương thức của Queue, cũng…

Cách dùng Hashtable (bảng băm) trong C#

Cách dùng Hashtable (bảng băm) trong C#

Cụ thể sẽ tìm hiểu Hashtable là gì? các đặc điểm của nó, cùng với…

Sự kiện Enter và Leave trong C# Winforms

Sự kiện Enter và Leave trong C# Winforms

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Sự kiện KeyPress, KeyDown, KeyUp trong C# Winforms

Một câu hỏi được đặt ra là làm cách nào để có thể phát hiện…

Sắp xếp trộn trong C# (Merge Sort)

Sắp xếp trộn trong C# (Merge Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp xếp các ..

Sắp xếp nổi bọt trong C# (Bubble Sort)

Sắp xếp nổi bọt trong C# (Bubble Sort)

Trong bài viết này mình sẽ hướng dẫn các bạn cách sắp ...

Cách in ra hình tam giác ký tự * trong C#

Cách in ra hình tam giác ký tự * trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách ...

Cách tính tổng các số chẵn từ 1 đến N trong C#

Cách tính tổng các số chẵn từ 1 đến N trong C#

Trước khi đi vào viết chương trình, chúng ta cùng tìm hiểu qua số chẵn…

Cách tính tổng các số lẻ từ 1 đến N trong C#

Cách tính tổng các số lẻ từ 1 đến N trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tính tổng các lẻ…

Cách đếm số chữ số của một số nguyên trong C#

Cách đếm số chữ số của một số nguyên trong C#

Chúng ta cùng xem qua một số ví dụ để hiểu rõ hơn về chương…

Cách tính chu vi và diện tích hình tam giác trong C#

Cách tính chu vi và diện tích hình tam giác trong C#

Tam giác là một loại hình cơ bản trong hình học, có ba đỉnh là…

Cách tính chu vi và diện tích hình tròn trong C#

Cách tính chu vi và diện tích hình tròn trong C#

Trước khi đi vào viết chương trình tính chu vi và diện ..

Cách tính chu vi và diện tích hình chữ nhật trong C#

Cách tính chu vi và diện tích hình chữ nhật trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn ...

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Cách xóa phần tử trùng lặp khỏi mảng trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách loại bỏ các ..

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Cách tìm tất cả các chuỗi con của chuỗi đã cho trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách tìm ...

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Cách xóa các ký tự trùng lặp khỏi chuỗi trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách xóa các ký tự…

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Đếm số lần xuất hiện của ký tự trong chuỗi trong C#

Trong bài viết này minh sẽ hướng dẫn các bạn cách đếm ...

Cách chuyển đổi nhị phân sang thập phân trong C#

Cách chuyển đổi nhị phân sang thập phân trong C#

Trong bài viết này mình sẽ hướng dẫn các bạn cách chuyển đổi số ...

Cách chuyển đổi thập phân sang nhị phân trong C#

Cách chuyển đổi thập phân sang nhị phân trong C#

Số nhị phân là các con số có cơ số là 2. Các số nhị…

Top