Trang chủ
Bài viết mới
Diễn đàn
Bài mới trên hồ sơ
Hoạt động mới nhất
VIDEO
Mùa Tết
Văn Học Trẻ
Văn Học News
Media
New media
New comments
Search media
Đại Học
Đại cương
Chuyên ngành
Triết học
Kinh tế
KHXH & NV
Công nghệ thông tin
Khoa học kĩ thuật
Luận văn, tiểu luận
Phổ Thông
Lớp 12
Ngữ văn 12
Lớp 11
Ngữ văn 11
Lớp 10
Ngữ văn 10
LỚP 9
Ngữ văn 9
Lớp 8
Ngữ văn 8
Lớp 7
Ngữ văn 7
Lớp 6
Ngữ văn 6
Tiểu học
Thành viên
Thành viên trực tuyến
Bài mới trên hồ sơ
Tìm trong hồ sơ cá nhân
Credits
Transactions
Xu: 0
Đăng nhập
Đăng ký
Có gì mới?
Tìm kiếm
Tìm kiếm
Chỉ tìm trong tiêu đề
Bởi:
Hoạt động mới nhất
Đăng ký
Menu
Đăng nhập
Đăng ký
Install the app
Cài đặt
Chào mừng Bạn tham gia Diễn Đàn VNKienThuc.com -
Định hướng Forum
Kiến Thức
- HÃY TẠO CHỦ ĐỀ KIẾN THỨC HỮU ÍCH VÀ CÙNG NHAU THẢO LUẬN Kết nối:
VNK X
-
VNK groups
| Nhà Tài Trợ:
BhnongFood X
-
Bhnong groups
-
Đặt mua Bánh Bhnong
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Tính kế thừa trong C# là gì?
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Trả lời chủ đề
Nội dung
<blockquote data-quote="uocmo_kchodoi" data-source="post: 177534" data-attributes="member: 165510"><p style="text-align: center"><strong><span style="color: #ff0000">TÍNH KẾ THỪA TRONG C#, ĐA KẾ THỪA</span></strong></p> <p style="text-align: center"><strong><span style="color: #ff0000"></span></strong></p><p><strong>Khái niệm: </strong>Tính kế thừa (Inheritance) trong C# cho phép lập trình viên tạo ra một lớp mới kế thừa một lớp đã tồn tại. Nghĩa là lớp được kế thừa sẽ có tất cả những thuộc tính và phương thức với quyền truy cập không phải private của lớp cha. Đây là một trong những khái niệm quan trọng nhất trong lập trình hướng đối tượng.. </p><p></p><p>Khi tạo một lớp, thay vì viết toàn bộ các thành viên dữ liệu và các hàm thành viên mới, lập trình viên có thể nên kế thừa các thành viên của một lớp đang tồn tại. Lớp đang tồn tại này được gọi là Base Class - lớp cơ sở, và lớp mới được xem như là Derived Class – lớp thừa kế.</p><p></p><p>Cũng tương tự như tính kế thừa trong Java, C# chỉ hỗ trợ đơn thừa kế (nghĩa là một lớp chỉ được phép kế thừa một lớp khác). Hình bên dưới là một ví dụ về tính kế thừa trong c#, cụ thể khi tạo lớp NhanVien và lớp KhachHang, chúng ta sẽ kế thừa lớp Nguoi.</p><p></p><p style="text-align: center"><a href="https://giasutinhoc.vn/wp-content/uploads/2016/07/tinh-ke-thua-trong-c-1.png" target="_blank"><img src="https://giasutinhoc.vn/wp-content/uploads/2016/07/tinh-ke-thua-trong-c-1.png" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></a></p><p></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>1. Lớp cơ sở (Base Class) và Lớp thừa kế (Derived Class) trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Một lớp có thể được kế thừa từ hơn một lớp khác, nghĩa là, nó có thể kế thừa dữ liệu và hàm từ nhiều Lớp hoặc Interface cơ sở.</p><p></p><p>Cú pháp để tạo lớp kế thừa trong C# là:</p><p></p><p><acess-specifier> class <base_class></p><p>{</p><p> ...</p><p>}</p><p>class <derived_class> : <base_class></p><p>{</p><p> ...</p><p>}</p><p>Xét một lớp cơ sở Shape và lớp kế thừa Rectangle sau: tạo 3 lớp có tên lần lượt là Shape, HinhChuNhat, TestCsharp trong đó:</p><p></p><p>Lớp Shape là lớp cơ sở</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Shape</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> protected int chieu_rong;</span></em></p><p><em><span style="color: #5900b3"> protected int chieu_cao;</span></em></p><p><em><span style="color: #5900b3"> public void setChieuRong(int w)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_rong = w;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public void setChieuCao(int h)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_cao = h;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp HinhChuNhat là lớp kế thừa</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class HinhChuNhat : Shape</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public int tinhDienTich()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return (chieu_cao * chieu_rong);</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng HinhChuNhat</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Tinh ke thua trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------\n");</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> //tao doi tuong HinhChuNhat</span></em></p><p><em><span style="color: #5900b3"> HinhChuNhat hcn = new HinhChuNhat();</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> hcn.setChieuRong(5);</span></em></p><p><em><span style="color: #5900b3"> hcn.setChieuCao(7);</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // in dien tich cua doi tuong.</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Dien tich hinh chu nhat: {0}", hcn.tinhDienTich());</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.</p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/tinh-ke-thua.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p> <p style="text-align: center"></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>2. Khởi tạo Lớp cơ sở (Base Class) trong C#</strong></span></span></p><p><span style="font-size: 18px"><span style="color: #0000ff"></span></span></p><p>Lớp kế thừa (Derived Class) trong C# kế thừa các biến thành viên và các phương thức thành viên từ lớp cơ sở. Vì thế, đối tượng của lớp cha nên được tạo trước khi lớp phụ được tạo. Bạn có thể cung cấp các chỉ thị để khởi tạo lớp phụ trong danh sách khởi tạo thành viên.</p><p></p><p>Chương trình ví dụ sau minh họa cách khởi tạo Lớp cơ sở (Base Class) trong C#: tạo 3 lớp có tên lần lượt là HinhChuNhat, ChiPhiXayDung, TestCsharp như sau:</p><p></p><p>Lớp HinhChuNhat là lớp cơ sở</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class HinhChuNhat</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> //cac bien thanh vien</span></em></p><p><em><span style="color: #5900b3"> protected double chieu_dai;</span></em></p><p><em><span style="color: #5900b3"> protected double chieu_rong;</span></em></p><p><em><span style="color: #5900b3"> // constructor</span></em></p><p><em><span style="color: #5900b3"> public HinhChuNhat(double l, double w)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_dai = l;</span></em></p><p><em><span style="color: #5900b3"> chieu_rong = w;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> //phuong thuc</span></em></p><p><em><span style="color: #5900b3"> public double tinhDienTich()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> return chieu_dai * chieu_rong;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> </span></em></p><p><em><span style="color: #5900b3"> public void Display()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chieu dai: {0}", chieu_dai);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chieu rong: {0}", chieu_rong);</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Dien tich: {0}", tinhDienTich());</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp ChiPhiXayDung kế thừa lớp HinhChuNhat</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class ChiPhiXayDung : HinhChuNhat</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> private double cost;</span></em></p><p><em><span style="color: #5900b3"> public ChiPhiXayDung(double l, double w) : base(l, w)</span></em></p><p><em><span style="color: #5900b3"> { }</span></em></p><p><em><span style="color: #5900b3"> public double tinhChiPhi()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> double chi_phi;</span></em></p><p><em><span style="color: #5900b3"> chi_phi = tinhDienTich() * 70;</span></em></p><p><em><span style="color: #5900b3"> return chi_phi;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public void hienThiThongTin()</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> base.Display();</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Chi phi: {0}", tinhChiPhi());</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng ChiPhiXayDung</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Tinh ke thua trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Khoi tao lop co so");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------\n");</span></em></p><p><em><span style="color: #5900b3"> //tao doi tuong ChiPhiXayDung</span></em></p><p><em><span style="color: #5900b3"> ChiPhiXayDung t = new ChiPhiXayDung(4.5, 7.5);</span></em></p><p><em><span style="color: #5900b3"> t.hienThiThongTin();</span></em></p><p><em><span style="color: #5900b3"> Console.ReadLine();</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/tinh-ke-thua-1.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p> <p style="text-align: center"></p><p><span style="font-size: 18px"><span style="color: #0000ff"><strong>3. Đa kế thừa trong C#</strong></span></span></p><p><span style="font-size: 18px"></span></p><p>C# không hỗ trợ đa kế thừa. Tuy nhiên, bạn có thể sử dụng Interface để triển khai đa kế thừa. Ví dụ sau minh họa cách sử dụng Interface để triển khai đa kế thừa trong C#: chúng ta tạo 2 lớp có tên lần lượt là Shape, HinhChuNhat, TestCsharp và một interface có tên làChiPhiSon như sau:</p><p></p><p>Lớp Shape là lớp cơ sở</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> class Shape</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> protected int chieu_rong;</span></em></p><p><em><span style="color: #5900b3"> protected int chieu_cao;</span></em></p><p><em><span style="color: #5900b3"> public void setChieuRong(int w)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_rong = w;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> public void setChieuCao(int h)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> chieu_cao = h;</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>interface ChiPhiSon</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public interface ChiPhiSon</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> int tinhChiPhi(int dien_tich);</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Lớp HinhChuNhat là lớp kế thừa lớp Shape và interface ChiPhiSon</p><p></p><p><span style="color: #5900b3"><em>using System;</em></span></p><p><span style="color: #5900b3"><em>namespace VietJackCsharp</em></span></p><p><span style="color: #5900b3"><em>{</em></span></p><p><span style="color: #5900b3"><em> class HinhChuNhat : Shape, ChiPhiSon</em></span></p><p><span style="color: #5900b3"><em> {</em></span></p><p><span style="color: #5900b3"><em> public int tinhDienTich()</em></span></p><p><span style="color: #5900b3"><em> {</em></span></p><p><span style="color: #5900b3"><em> return (chieu_rong * chieu_cao);</em></span></p><p><span style="color: #5900b3"><em> }</em></span></p><p><span style="color: #5900b3"><em> public int tinhChiPhi(int dien_tich)</em></span></p><p><span style="color: #5900b3"><em> {</em></span></p><p><span style="color: #5900b3"><em> return dien_tich * 70;</em></span></p><p><span style="color: #5900b3"><em> }</em></span></p><p><span style="color: #5900b3"><em> }</em></span></p><p><span style="color: #5900b3"><em>}</em></span></p><p>Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng HinhChuNhat</p><p></p><p><em><span style="color: #5900b3">using System;</span></em></p><p><em><span style="color: #5900b3">namespace VietJackCsharp</span></em></p><p><em><span style="color: #5900b3">{</span></em></p><p><em><span style="color: #5900b3"> public class TestCsharp</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> public static void Main(string[] args)</span></em></p><p><em><span style="color: #5900b3"> {</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Tinh ke thua trong C#");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Vi du minh hoa Da ke thua");</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("------------------------------");</span></em></p><p><em><span style="color: #5900b3"> //tao doi tuong HinhChuNhat</span></em></p><p><em><span style="color: #5900b3"> HinhChuNhat hcn = new HinhChuNhat();</span></em></p><p><em><span style="color: #5900b3"> int dien_tich;</span></em></p><p><em><span style="color: #5900b3"> hcn.setChieuRong(5);</span></em></p><p><em><span style="color: #5900b3"> hcn.setChieuCao(7);</span></em></p><p><em><span style="color: #5900b3"> dien_tich = hcn.tinhDienTich();</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> // in dien tich va chi phi.</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Tong dien tich: {0}", hcn.tinhDienTich());</span></em></p><p><em><span style="color: #5900b3"> Console.WriteLine("Tong chi phi son: 0", hcn.tinhChiPhi(dien_tich));</span></em></p><p><em><span style="color: #5900b3"> Console.ReadLine();</span></em></p><p><em><span style="color: #5900b3"></span></em></p><p><em><span style="color: #5900b3"> Console.ReadKey();</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3"> }</span></em></p><p><em><span style="color: #5900b3">}</span></em></p><p>Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau:</p><p></p><p style="text-align: center"><img src="https://vietjack.com/csharp/images/da-ke-thua.PNG" alt="" class="fr-fic fr-dii fr-draggable " data-size="" style="" /></p> <p style="text-align: center"></p><p>Vậy là chúng ta đã tìm hiểu xong về tính kế thừa trong C# rồi. Chúc bạn sẽ nhanh chóng lĩnh hội nhiều kiến thức để làm chủ ngôn ngữ C# này nhé!</p><p style="text-align: center"></p> <p style="text-align: right">Nguồn: vietjack.com</p></blockquote><p></p>
[QUOTE="uocmo_kchodoi, post: 177534, member: 165510"] [CENTER][B][COLOR=#ff0000]TÍNH KẾ THỪA TRONG C#, ĐA KẾ THỪA [/COLOR][/B][/CENTER] [B]Khái niệm: [/B]Tính kế thừa (Inheritance) trong C# cho phép lập trình viên tạo ra một lớp mới kế thừa một lớp đã tồn tại. Nghĩa là lớp được kế thừa sẽ có tất cả những thuộc tính và phương thức với quyền truy cập không phải private của lớp cha. Đây là một trong những khái niệm quan trọng nhất trong lập trình hướng đối tượng.. Khi tạo một lớp, thay vì viết toàn bộ các thành viên dữ liệu và các hàm thành viên mới, lập trình viên có thể nên kế thừa các thành viên của một lớp đang tồn tại. Lớp đang tồn tại này được gọi là Base Class - lớp cơ sở, và lớp mới được xem như là Derived Class – lớp thừa kế. Cũng tương tự như tính kế thừa trong Java, C# chỉ hỗ trợ đơn thừa kế (nghĩa là một lớp chỉ được phép kế thừa một lớp khác). Hình bên dưới là một ví dụ về tính kế thừa trong c#, cụ thể khi tạo lớp NhanVien và lớp KhachHang, chúng ta sẽ kế thừa lớp Nguoi. [CENTER][URL='https://giasutinhoc.vn/wp-content/uploads/2016/07/tinh-ke-thua-trong-c-1.png'][IMG]https://giasutinhoc.vn/wp-content/uploads/2016/07/tinh-ke-thua-trong-c-1.png[/IMG][/URL][/CENTER] [SIZE=5][COLOR=#0000ff][B]1. Lớp cơ sở (Base Class) và Lớp thừa kế (Derived Class) trong C#[/B] [B][/B][/COLOR][/SIZE] Một lớp có thể được kế thừa từ hơn một lớp khác, nghĩa là, nó có thể kế thừa dữ liệu và hàm từ nhiều Lớp hoặc Interface cơ sở. Cú pháp để tạo lớp kế thừa trong C# là: <acess-specifier> class <base_class> { ... } class <derived_class> : <base_class> { ... } Xét một lớp cơ sở Shape và lớp kế thừa Rectangle sau: tạo 3 lớp có tên lần lượt là Shape, HinhChuNhat, TestCsharp trong đó: Lớp Shape là lớp cơ sở [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Shape { protected int chieu_rong; protected int chieu_cao; public void setChieuRong(int w) { chieu_rong = w; } public void setChieuCao(int h) { chieu_cao = h; } } }[/COLOR][/I] Lớp HinhChuNhat là lớp kế thừa [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class HinhChuNhat : Shape { public int tinhDienTich() { return (chieu_cao * chieu_rong); } } }[/COLOR][/I] Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng HinhChuNhat [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Tinh ke thua trong C#"); Console.WriteLine("------------------------\n"); //tao doi tuong HinhChuNhat HinhChuNhat hcn = new HinhChuNhat(); hcn.setChieuRong(5); hcn.setChieuCao(7); // in dien tich cua doi tuong. Console.WriteLine("Dien tich hinh chu nhat: {0}", hcn.tinhDienTich()); Console.ReadKey(); } } }[/COLOR][/I] Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn. Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/tinh-ke-thua.PNG[/IMG] [/CENTER] [SIZE=5][COLOR=#0000ff][B]2. Khởi tạo Lớp cơ sở (Base Class) trong C#[/B] [B][/B][/COLOR][/SIZE] Lớp kế thừa (Derived Class) trong C# kế thừa các biến thành viên và các phương thức thành viên từ lớp cơ sở. Vì thế, đối tượng của lớp cha nên được tạo trước khi lớp phụ được tạo. Bạn có thể cung cấp các chỉ thị để khởi tạo lớp phụ trong danh sách khởi tạo thành viên. Chương trình ví dụ sau minh họa cách khởi tạo Lớp cơ sở (Base Class) trong C#: tạo 3 lớp có tên lần lượt là HinhChuNhat, ChiPhiXayDung, TestCsharp như sau: Lớp HinhChuNhat là lớp cơ sở [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class HinhChuNhat { //cac bien thanh vien protected double chieu_dai; protected double chieu_rong; // constructor public HinhChuNhat(double l, double w) { chieu_dai = l; chieu_rong = w; } //phuong thuc public double tinhDienTich() { return chieu_dai * chieu_rong; } public void Display() { Console.WriteLine("Chieu dai: {0}", chieu_dai); Console.WriteLine("Chieu rong: {0}", chieu_rong); Console.WriteLine("Dien tich: {0}", tinhDienTich()); } } }[/COLOR][/I] Lớp ChiPhiXayDung kế thừa lớp HinhChuNhat [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class ChiPhiXayDung : HinhChuNhat { private double cost; public ChiPhiXayDung(double l, double w) : base(l, w) { } public double tinhChiPhi() { double chi_phi; chi_phi = tinhDienTich() * 70; return chi_phi; } public void hienThiThongTin() { base.Display(); Console.WriteLine("Chi phi: {0}", tinhChiPhi()); } } }[/COLOR][/I] Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng ChiPhiXayDung [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Tinh ke thua trong C#"); Console.WriteLine("Khoi tao lop co so"); Console.WriteLine("------------------------\n"); //tao doi tuong ChiPhiXayDung ChiPhiXayDung t = new ChiPhiXayDung(4.5, 7.5); t.hienThiThongTin(); Console.ReadLine(); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/tinh-ke-thua-1.PNG[/IMG] [/CENTER] [SIZE=5][COLOR=#0000ff][B]3. Đa kế thừa trong C#[/B][/COLOR] [B][/B][/SIZE] C# không hỗ trợ đa kế thừa. Tuy nhiên, bạn có thể sử dụng Interface để triển khai đa kế thừa. Ví dụ sau minh họa cách sử dụng Interface để triển khai đa kế thừa trong C#: chúng ta tạo 2 lớp có tên lần lượt là Shape, HinhChuNhat, TestCsharp và một interface có tên làChiPhiSon như sau: Lớp Shape là lớp cơ sở [I][COLOR=#5900b3]using System; namespace VietJackCsharp { class Shape { protected int chieu_rong; protected int chieu_cao; public void setChieuRong(int w) { chieu_rong = w; } public void setChieuCao(int h) { chieu_cao = h; } } }[/COLOR][/I] interface ChiPhiSon [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public interface ChiPhiSon { int tinhChiPhi(int dien_tich); } }[/COLOR][/I] Lớp HinhChuNhat là lớp kế thừa lớp Shape và interface ChiPhiSon [COLOR=#5900b3][I]using System;[/I] [I]namespace VietJackCsharp[/I] [I]{[/I] [I] class HinhChuNhat : Shape, ChiPhiSon[/I] [I] {[/I] [I] public int tinhDienTich()[/I] [I] {[/I] [I] return (chieu_rong * chieu_cao);[/I] [I] }[/I] [I] public int tinhChiPhi(int dien_tich)[/I] [I] {[/I] [I] return dien_tich * 70;[/I] [I] }[/I] [I] }[/I] [I]}[/I][/COLOR] Lớp TestCsharp chứa phương thức main() để thao tác trên đối tượng HinhChuNhat [I][COLOR=#5900b3]using System; namespace VietJackCsharp { public class TestCsharp { public static void Main(string[] args) { Console.WriteLine("Tinh ke thua trong C#"); Console.WriteLine("Vi du minh hoa Da ke thua"); Console.WriteLine("------------------------------"); //tao doi tuong HinhChuNhat HinhChuNhat hcn = new HinhChuNhat(); int dien_tich; hcn.setChieuRong(5); hcn.setChieuCao(7); dien_tich = hcn.tinhDienTich(); // in dien tich va chi phi. Console.WriteLine("Tong dien tich: {0}", hcn.tinhDienTich()); Console.WriteLine("Tong chi phi son: 0", hcn.tinhChiPhi(dien_tich)); Console.ReadLine(); Console.ReadKey(); } } }[/COLOR][/I] Biên dịch và chạy chương trình C# trên sẽ cho kết quả sau: [CENTER][IMG]https://vietjack.com/csharp/images/da-ke-thua.PNG[/IMG] [/CENTER] Vậy là chúng ta đã tìm hiểu xong về tính kế thừa trong C# rồi. Chúc bạn sẽ nhanh chóng lĩnh hội nhiều kiến thức để làm chủ ngôn ngữ C# này nhé! [CENTER][/CENTER] [RIGHT]Nguồn: vietjack.com[/RIGHT] [/QUOTE]
Tên
Mã xác nhận
Gửi trả lời
CÔNG NGHỆ
Công Nghệ Thông Tin
Code
Tính kế thừa trong C# là gì?
Top