Nền tảng Kiến thức - Hành trang tới Tương lai
Card image

Chương trình học


  1. Cài đặt môi trường Lập trình C# 2
    1. Cài đặt Visual Studio
    2. Môi trường phát triển .NET
  2. Nhập môn Lập trình C# 18
    1. Giới thiệu ngôn ngữ lập trình C#
    2. Cấu trúc chương trình C#
    3. Cú pháp cơ bản C#
    4. Các kiểu dữ liệu trong C#
    5. Chuyển đổi kiểu dữ liệu trong C#
    6. Khởi tạo biến trong C#
    7. Hằng số trong C#
    8. Toán tử trong C#
    9. Điều kiện trong C#
    10. Vòng lặp trong C#
    11. Tính bao đóng trong C#
    12. Tạo phương thức/hàm trong C#
    13. Đối tượng Nullable trong C#
    14. Mảng trong C#
    15. Chuỗi trong C#
    16. Cấu trúc trong C#
    17. Enums trong C#
    18. Truyền Tham số Reference hay Tham trị (Value) trong C#
  3. Hướng đối tượng trong C# 11
    1. Class trong C#
    2. Kế thừa trong C#
    3. Tính đa hình trong C#
    4. Nạp chồng toán tử trong C#
    5. Giao diện (Interface) trong C#
    6. Namespace trong C#
    7. Các lệnh tiền xử lý trong C#
    8. Biểu thức chính quy (Regular) trong C#
    9. Bắt các lỗi/ngoại lệ (Exception) trong C#
    10. Xử lý Đọc/Ghi File trong C#
    11. LINQ trong C#
  4. Các kỹ thuật nâng cao trong C# 2
    1. Thuộc tính (Attributes) trong C#
    2. Biên dịch ngược (Reflection) trong C#
  5. Bài tập thực hành 27
    1. Khai báo các Kiểu dữ liệu cho Mẫu Lý lịch A2 và Mẫu Hóa đơn Bán hàng
    2. Sử dụng các Toán tử cơ bản trong C#
    3. Kiểm tra số chẵn hay lẻ
    4. Thay đổi vị trí của 2 phần tử
    5. Tính tổng các kí tự số
    6. Đảo ngược con số
    7. Tạo chương trình ATM đơn giản
    8. Tạo chương trình ATM đơn giản với các phương án rút tiền theo các mệnh giá
    9. Tìm số Max, Min trong mảng 2 chiều
    10. Tạo cấu trúc lưu trữ thông tin Nhân viên
    11. Làm quen Hướng đối tượng trong C#
    12. Mã hóa chuỗi với Hacker Speak (H4ck3rSp34k)
    13. Mã hóa chuỗi với Alternating Captions (AlTeRnAtInG_CaPs​​​​​)
    14. Tính tổng 2 số nhỏ nhất trong danh sách
    15. Trích xuất thông tin từ dữ liệu trong FILE TEXT
    16. In bảng cửu chương
    17. In tam giác Nhị phân
    18. In tam giác Số ký tự
    19. Đếm số 1
    20. Sử dụng Mảng 2 chiều để in tên dạng Asterisk ra màn hình
    21. Sử dụng Mảng 1 chiều để phân tách Tên với khoảng cách
    22. Bài tập Biểu thức Chính quy (Regular Expression)
    23. Ghi log lỗi với File và Try Catch
    24. Ghi Access log
    25. LINQ group by tên tập tin
    26. LINQ với collection
    27. Tạo chương trình Quản lý Danh sách Sinh viên và Giảng viên
  6. Kiểm tra kiến thức 1
    1. Kiểm tra kiến thức Lập trình C#
  7. Kiểm tra kiến thức - Đồ án 2
    1. Bài tập Kiểm tra Thực hành C# - Đề 01
    2. Bài tập Kiểm tra Thực hành C# - Đề 02

Chương 3-Bài 2. Kế thừa trong C#

Tác giả: Dương Nguyễn Phú Cường
Ngày đăng: Hồi xưa đó

One of the most important concepts in object-oriented programming is inheritance. Inheritance allows us to define a class in terms of another class, which makes it easier to create and maintain an application. This also provides an opportunity to reuse the code functionality and speeds up implementation time. When creating a class, instead of writing completely new data members and member functions, the programmer can designate that the new class should inherit the members of an existing class. This existing class is called the baseclass, and the new class is referred to as the derived class. The idea of inheritance implements the IS-A relationship. For example, mammal IS A animal, dog IS-A mammal hence dog IS-A animal as well, and so on.

Base and Derived Classes

A class can be derived from more than one class or interface, which means that it can inherit data and functions from multiple base classes or interfaces. The syntax used in C# for creating derived classes is as follows −
<acess-specifier> class <base_class> {
   ...
}

class <derived_class> : <base_class> {
   ...
}
Consider a base class Shape and its derived class Rectangle −
using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Derived class
   class Rectangle: Shape {
      public int getArea() { 
         return (width * height); 
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();

         Rect.setWidth(5);
         Rect.setHeight(7);

         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }
}
When the above code is compiled and executed, it produces the following result −
Total area: 35

Initializing Base Class

The derived class inherits the base class member variables and member methods. Therefore the super class object should be created before the subclass is created. You can give instructions for superclass initialization in the member initialization list. The following program demonstrates this −
using System;

namespace RectangleApplication {
   class Rectangle {
      
      //member variables
      protected double length;
      protected double width;
      
      public Rectangle(double l, double w) {
         length = l;
         width = w;
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle  
   class Tabletop : Rectangle {
      private double cost;
      public Tabletop(double l, double w) : base(l, w) { }
      
      public double GetCost() {
         double cost;
         cost = GetArea() * 70;
         return cost;
      }
      public void Display() {
         base.Display();
         Console.WriteLine("Cost: {0}", GetCost());
      }
   }
   class ExecuteRectangle {
      static void Main(string[] args) {
         Tabletop t = new Tabletop(4.5, 7.5);
         t.Display();
         Console.ReadLine();
      }
   }
}
When the above code is compiled and executed, it produces the following result −
Length: 4.5
Width: 7.5
Area: 33.75
Cost: 2362.5

Multiple Inheritance in C#

C# does not support multiple inheritance. However, you can use interfaces to implement multiple inheritance. The following program demonstrates this −
using System;

namespace InheritanceApplication {
   class Shape {
      public void setWidth(int w) {
         width = w;
      }
      public void setHeight(int h) {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // Base class PaintCost
   public interface PaintCost {
      int getCost(int area);
   }
   
   // Derived class
   class Rectangle : Shape, PaintCost {
      public int getArea() {
         return (width * height);
      }
      public int getCost(int area) {
         return area * 70;
      }
   }
   class RectangleTester {
      static void Main(string[] args) {
         Rectangle Rect = new Rectangle();
         int area;
         
         Rect.setWidth(5);
         Rect.setHeight(7);
         area = Rect.getArea();
         
         // Print the area of the object.
         Console.WriteLine("Total area: {0}",  Rect.getArea());
         Console.WriteLine("Total paint cost: ${0}" , Rect.getCost(area));
         Console.ReadKey();
      }
   }
}
When the above code is compiled and executed, it produces the following result −
Total area: 35
Total paint cost: $2450
 

Các bài học

Chương trình học

Bao gồm Module, Chương, Bài học, Bài tập, Kiểm tra...

Chương trình học


  1. Cài đặt môi trường Lập trình C# 2
    1. Cài đặt Visual Studio
    2. Môi trường phát triển .NET
  2. Nhập môn Lập trình C# 18
    1. Giới thiệu ngôn ngữ lập trình C#
    2. Cấu trúc chương trình C#
    3. Cú pháp cơ bản C#
    4. Các kiểu dữ liệu trong C#
    5. Chuyển đổi kiểu dữ liệu trong C#
    6. Khởi tạo biến trong C#
    7. Hằng số trong C#
    8. Toán tử trong C#
    9. Điều kiện trong C#
    10. Vòng lặp trong C#
    11. Tính bao đóng trong C#
    12. Tạo phương thức/hàm trong C#
    13. Đối tượng Nullable trong C#
    14. Mảng trong C#
    15. Chuỗi trong C#
    16. Cấu trúc trong C#
    17. Enums trong C#
    18. Truyền Tham số Reference hay Tham trị (Value) trong C#
  3. Hướng đối tượng trong C# 11
    1. Class trong C#
    2. Kế thừa trong C#
    3. Tính đa hình trong C#
    4. Nạp chồng toán tử trong C#
    5. Giao diện (Interface) trong C#
    6. Namespace trong C#
    7. Các lệnh tiền xử lý trong C#
    8. Biểu thức chính quy (Regular) trong C#
    9. Bắt các lỗi/ngoại lệ (Exception) trong C#
    10. Xử lý Đọc/Ghi File trong C#
    11. LINQ trong C#
  4. Các kỹ thuật nâng cao trong C# 2
    1. Thuộc tính (Attributes) trong C#
    2. Biên dịch ngược (Reflection) trong C#
  5. Bài tập thực hành 27
    1. Khai báo các Kiểu dữ liệu cho Mẫu Lý lịch A2 và Mẫu Hóa đơn Bán hàng
    2. Sử dụng các Toán tử cơ bản trong C#
    3. Kiểm tra số chẵn hay lẻ
    4. Thay đổi vị trí của 2 phần tử
    5. Tính tổng các kí tự số
    6. Đảo ngược con số
    7. Tạo chương trình ATM đơn giản
    8. Tạo chương trình ATM đơn giản với các phương án rút tiền theo các mệnh giá
    9. Tìm số Max, Min trong mảng 2 chiều
    10. Tạo cấu trúc lưu trữ thông tin Nhân viên
    11. Làm quen Hướng đối tượng trong C#
    12. Mã hóa chuỗi với Hacker Speak (H4ck3rSp34k)
    13. Mã hóa chuỗi với Alternating Captions (AlTeRnAtInG_CaPs​​​​​)
    14. Tính tổng 2 số nhỏ nhất trong danh sách
    15. Trích xuất thông tin từ dữ liệu trong FILE TEXT
    16. In bảng cửu chương
    17. In tam giác Nhị phân
    18. In tam giác Số ký tự
    19. Đếm số 1
    20. Sử dụng Mảng 2 chiều để in tên dạng Asterisk ra màn hình
    21. Sử dụng Mảng 1 chiều để phân tách Tên với khoảng cách
    22. Bài tập Biểu thức Chính quy (Regular Expression)
    23. Ghi log lỗi với File và Try Catch
    24. Ghi Access log
    25. LINQ group by tên tập tin
    26. LINQ với collection
    27. Tạo chương trình Quản lý Danh sách Sinh viên và Giảng viên
  6. Kiểm tra kiến thức 1
    1. Kiểm tra kiến thức Lập trình C#
  7. Kiểm tra kiến thức - Đồ án 2
    1. Bài tập Kiểm tra Thực hành C# - Đề 01
    2. Bài tập Kiểm tra Thực hành C# - Đề 02

Bài học trước Bài học tiếp theo