Computer >> Máy Tính >  >> Lập trình >> C#

Giải thích khái niệm về một lớp trong C #

Một lớp là một trong những kiểu thiết yếu trong C #. Chúng ta có thể coi một lớp như một bản thiết kế cho các đối tượng liên quan đến miền vấn đề. Đó là một mẫu mà từ đó chúng ta tạo các đối tượng, xác định cấu trúc và hành vi sẽ được chia sẻ bởi tập hợp các đối tượng được tạo từ lớp này. Nói một cách đơn giản, một lớp là một trình cắt cookie và các đối tượng là chính các cookie.

Một lớp cũng cho phép đóng gói, đây là một khái niệm quan trọng trong lập trình hướng đối tượng. Nó có nghĩa là kết hợp dữ liệu và các thao tác hoạt động trên dữ liệu ở một nơi duy nhất và cung cấp một API đơn giản cho người dùng của đối tượng đó. Một lớp cho phép chúng ta đóng gói dữ liệu và ẩn các chi tiết không liên quan khỏi các lớp khác.

Chúng ta có thể tạo một lớp bằng cách sử dụng từ khóa class, theo sau là tên của lớp.

// User.cs
public class User{
   private string name;
   private int salary;
   public void Promote(){
      salary += 1000;
   }
}

Trong ví dụ trên, Người dùng là một lớp đại diện cho người dùng. Lớp này đóng gói hai phần dữ liệu - tên tiền lương . Chúng được gọi là các trường lớp và chứa tên và lương của người dùng. Nó cũng có một phương thức có tên là Thúc đẩy () , làm tăng lương của người dùng.

Mỗi lớp có một công cụ sửa đổi quyền truy cập được liên kết để kiểm soát xem lớp đó có hiển thị với các lớp khác hay không. Dưới đây là năm giá trị khả thi mà chúng tôi có thể cung cấp cho công cụ sửa đổi quyền truy cập.

Access Modifier Mô tả
public Truy cập không giới hạn
được bảo vệ Quyền truy cập hạn chế vào các lớp dẫn xuất
nội bộ Quyền truy cập hạn chế vào hội đồng
nội bộ được bảo vệ Quyền truy cập hạn chế vào hợp ngữ hoặc các lớp dẫn xuất
riêng tư Không có quyền truy cập từ bên ngoài

Để tạo một phiên bản của một lớp, chúng ta có thể sử dụng new từ khóa. Mới toán tử tính toán số byte được yêu cầu bởi dữ liệu của đối tượng và cấp phát bộ nhớ cho đối tượng. Sau đó, nó trả về một con trỏ (còn được gọi là tham chiếu) đến đối tượng mới được tạo.

var alice = new User();
var bob = new User();

Tham chiếu này sau đó được lưu trữ trong biến ở bên trái của dấu =. Trong ví dụ trên, Alice và Bob giữ các tham chiếu hoặc con trỏ đến các đối tượng mới được tạo.

Giải thích khái niệm về một lớp trong C #

Trong C #, quy ước đặt tên cho một lớp tuân theo PascalCase viết hoa chữ cái đầu tiên của mỗi từ trong một từ ghép, ví dụ:StringBuilder, UserController, v.v. Không cần thiết phải tạo một lớp trong tệp có tên trùng với tên lớp. Tuy nhiên, đó là một quy ước được hầu hết các dự án C # sử dụng.

Trình tạo

Trong ví dụ trên, khi chúng tôi tạo các phiên bản của lớp Người dùng, tức là alice và bob, chúng tôi đã không cung cấp tên và tiền lương ban đầu của chúng. Thông thường, một đối tượng mới được tạo cần một số thông tin để thực hiện công việc của nó và một phương thức khởi tạo được sử dụng để khởi tạo dữ liệu lớp.

Chúng ta có thể thêm một hàm tạo để cung cấp cho người dùng tên và mức lương của nó như sau -

public class User{
   private string name;
   private int salary;
   public User(string name, int salary){
      this.name = name;
      this.salary = salary;
   }
   public void Promote(){
      salary += 1000;
   }
}

Có một hàm tạo cho phép chúng tôi chuyển tên và mức lương của người dùng khi tạo một phiên bản mới.

var alice = new User("Alice", 50000);
var bob = new User("Bob", 45000);

Có thể có nhiều hơn một hàm tạo trong một lớp. Có nhiều hàm tạo cho phép chúng ta khởi tạo lớp theo nhiều cách khác nhau. Ví dụ:chúng tôi có thể thêm một hàm tạo khác chỉ lấy tên của người dùng và ấn định mức lương mặc định.

public User(string name){
   this.name = name;
   this.salary = 50000;
}

Ví dụ

using System;
class Program{
   static void Main(){
      var alice = new User();
      alice.Print();

      var bob = new User();
      bob.Print();
      var chris = new User("Chris", 50000);
      chris.Print();
      var debs = new User("Debs", 45000);
      debs.Print();

      var scott = new User("Scott");
      scott.Print();
   }
}
public class User{
   private string name;
   private int salary;
   public User(){

   }
   public User(string name){
      this.name = name;
      this.salary = 50000;
   }
   public User(string name, int salary){
      this.name = name;
      this.salary = salary;
   }
   public void Promote(){
      salary += 1000;
   }
   public void Print(){
      Console.WriteLine($"{name}: {salary}");
   }
}

Đầu ra

: 0
: 0
Chris: 50000
Debs: 45000
Scott: 50000