Вспомните из главы 3 что классы в C# могут определять любое число
Для начала мы определим вашу первую модификацию класса Employee (по мере изучения материала данной главы мы будем добавлять в этот класс новые функциональные возможности).
// Исходное определение класса Employee.
namespace Employees {
public class Employee {
// Поля данных.
private string fullName;
private int empID;
private float currPay;
// Конструкторы.
public Employee(){}
public Employee(string fullName, int empID, float currPay) {
this.fullName = fullName;
this.empIP = empID;
this.currPay = currPay;
}
// Увеличение выплаты для данного работника.
public void GiveBonus(float amount) { currPay
// Текущее состояние объекта.
public void DisplayStats() {
Console.WriteLine("Имя: {0} ", fullName);
Console.WriteLine("З/п: {0} ", currPay);
Console
}
}
}
Обратите внимание на реализацию конструктора по умолчанию (он оказывается пустым) для класса Employee.
public class Employee {
…
public Employee(){}
…
}
Подобно C++ и Java, если в определении C#-класса задаются пользовательские конструкторы, то конструктор, заданный по умолчанию,
static void Main(string[] args) {
// Вызов конструктора, заданного до умолчанию.
Employee e = new Employee();
}
то должны явно переопределить конструктор, заданный по умолчанию. Если этого не сделать, то при создании экземпляра вашего класса с помощью конструктора по умолчанию вы получите ошибку компиляции. Так или иначе, следующий метод Main() создает целый ряд объектов Employee, используя наш пользовательский конструктор с тремся аргументами.
// Создание нескольких объектов Employee.
static void Main(string[] args) {
Employee e = new Employee("Джо", 80, 30000);
Employee e2;
e2 = new Employee("Бет", 81, 50000);
Console.ReadLine();
}
Перегрузка методов
Подобно другим объектно-ориентированным языкам, язык C# позволяет типу
public class Employee {
...
// Перегруженные конструкторы.
public Employee(){}
public Employee(string fullName, int empID, float currPay) {…}
...
}
Конструкторы, однако, не являются единственными членами, допускающими перегрузку. Продолжив рассмотрение текущего примера, предположим, что у нас есть класс Triangle (треугольник), который поддерживает перегруженный метод Draw(). С его помощью пользователю объекта позволяется выполнить визуализацию изображений, используя различные входные параметры.
public class Triangle {
// Перегруженный метод Draw() .
public void Draw(int x, int y, int height, int width) {…}
public void Draw(float x, float y, float height, float width) {…}
public void Draw(Point upperLeft, Point bottomRight) {…}
public void Draw(Rect r) {…}
}