* Clarified that not all constructors need to look like that * Added an example of a class extending a base class and implementing 2 interfaces
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Class
 | |
| ---
 | |
| 
 | |
| ## Class
 | |
| A class in C# is defined as a reference type. In order to instatiate a variable of a reference type, you must specify the `new` keyword, otherwise the variable will have the default value of `null`. See below for an example.
 | |
| 
 | |
| ```csharp
 | |
| // The value of variableOne is null at this point.
 | |
| NewClass variableOne;
 | |
| 
 | |
| // Now the value of variableOne will be an instance of the class NewClass
 | |
| variableOne = new NewClass();
 | |
| ```
 | |
| 
 | |
| At runtime, when the class is instantiated, enough memory is allocated onto the heap for that specific instance of the class held in the variable.
 | |
| 
 | |
| #### Creating Classes
 | |
| To create a class in C# we need to use the `class` keyword followed by a unique identifier.
 | |
| 
 | |
| Like other languages, C# creates a default constructor that accepts no parameters. We can also specify our own constructor if we need to take in special parameters or have custom initialization steps in our constructor.
 | |
| 
 | |
| ```csharp
 | |
| public class NewClass
 | |
| {
 | |
|     NewClass(string name)
 | |
|     {
 | |
|         // Initialization steps...
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| A class is a prototype or blueprint from which objects are created. In C#, the class is defined by using the keyword `class`. A class is used to combine together some methods, properties, fields, events, and delegates into a single unit. A class may contain nested classes too.
 | |
| 
 | |
| #### Example: Consider the case of Employee Class below:
 | |
| ```csharp
 | |
| using System;
 | |
| 
 | |
| namespace CPrograms
 | |
| {
 | |
|     class Employee
 | |
|     {
 | |
|         private string name;
 | |
|         private int employeeId;
 | |
| 
 | |
|         public Employee(string name, int employeeId)
 | |
|         {
 | |
|             this.name = name;
 | |
|             this.employeeId = employeeId;
 | |
|         }
 | |
|         public void PrintEmployee()
 | |
|         {
 | |
|             Console.WriteLine("Employee Name: {0}, Employee ID: {1}", this.name, this.employeeId);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     class Program
 | |
|     {
 | |
|         static void Main(string[] args)
 | |
|         {
 | |
|             Employee employeeObject = new Employee("John Doe", 420156);
 | |
|             employeeObject.PrintEmployee();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## Output:
 | |
| ```sh
 | |
| > Employee Name: John Doe, Employee ID: 420156
 | |
| ```
 | |
| 
 | |
| A class can inherit from one base class only. However, it can implement from more than one interface.
 | |
| 
 | |
| #### Example of inheriting from one class and 2 interfaces
 | |
| ```csharp
 | |
| // base class: Human
 | |
| public class Human {
 | |
|     public int Age;
 | |
|     
 | |
|     public Human (int age) {
 | |
|         Age = age;
 | |
|     }
 | |
| }
 | |
| 
 | |
| // first interface: Student
 | |
| public interface Student {
 | |
|     int StudentNumber { get; set; }
 | |
| }
 | |
| 
 | |
| // second interface: Employee
 | |
| public interface Employee {
 | |
|     int EmployeeNumber { get; set; }
 | |
|     string JobTitle { get; set; } 
 | |
| }
 | |
| 
 | |
| // Example of class extending a class and using 2 interfaces
 | |
| public class Person : Human, Student, Employee {
 | |
|    // new field for Person
 | |
|    public string Name;
 | |
|    
 | |
|    // needed to satisfy Student interface
 | |
|    public int StudentNumber { get; set; }
 | |
|    
 | |
|    // needed to satisfy Employee interface
 | |
|    public int EmployeeNumber { get; set; }
 | |
|    public string JobTitle { get; set; } 
 | |
| 
 | |
|    // set the instance variables and pass the age to the base class
 | |
|    public Person(string name, int age, int studentNum, int employeeNum, string jobTitle) : base(age)
 | |
|    {
 | |
|        Name = name;
 | |
|        StudentNumber = studentNum;
 | |
|        EmployeeNumber = employeeNum;
 | |
|        JobTitle = jobTitle;
 | |
|    }
 | |
| }
 | |
| ```
 | |
| 
 | |
| ## More Information
 | |
| Read more about classes [here](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/class)
 | |
| 
 |