BasicKnowledgeCSharp/LessonsAndTasks/Lesson 60 - Перегрузка конструкторов класса, что это/Program.cs

99 lines
2.4 KiB
C#
Raw Normal View History

2024-10-05 09:59:53 +03:00
using System;
/*
* Перегрузка конструкторов класса
*/
class Student
{
public Student(string lastName, DateTime birthday)
{
_lastName = lastName;
_birthday = birthday;
}
public Student(string lastName, string firstName, string middleName, DateTime birthday)
{
_lastName = lastName;
_firstName = firstName;
_middleName = middleName;
_birthday = birthday;
}
public Student(Student student)
{
_firstName = student._firstName;
_lastName = student._lastName;
_middleName = student._middleName;
_birthday = student._birthday;
}
private string _firstName;
private string _middleName;
private string _lastName;
private DateTime _birthday;
public void SetLastName(string lastName) => _lastName = lastName;
public void Print()
{
Console.WriteLine($"Имя: " + _firstName +
$"\nФамилия: " + _lastName +
$"\nОтчество: " + _middleName +
$"\nДата рождения: " + _birthday);
}
}
class Point
{
/// <summary>
/// наличие более одного конструктора и есть перегрузка
/// </summary>
public Point() => _x = _y = 1;
public Point(int x, int y)
{
_x = x;
_y = y;
}
private int _x;
private int _y;
public void Print()
{
Console.WriteLine($"X: {_x} \t Y: {_y}");
}
}
class Program
{
static void Main()
{
Point point = new Point();
point.Print();
Student student_1 = new Student("lastName", DateTime.Now);
//оба студента - это ссылки в управляемой куче (особенность класса)
//мы копируем ссылку студента 1 в обьект студента 2
Student student_2 = student_1;
//чтобы избежать копирования ссылки мы используем конструктор создания класса
//тем самым конструируем новый объект
Student student_3 = new Student(student_1);
student_1.SetLastName("#####");
student_3.SetLastName("***");
student_1.Print();
Console.WriteLine();
student_2.Print();
Console.WriteLine();
student_3.Print();
Console.ReadKey();
}
}