Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 118
- Предыдущая
- 118/642
- Следующая
Изменить размер шрифта:
118
Employee emp = new Employee("Marvin", 456, 30_000);emp.GiveBonus(1000);emp.DisplayStats();// Использовать методы get/set для взаимодействия// с именем сотрудника, представленного объектом.emp.SetName("Marv");Console.WriteLine("Employee is named: {0}", emp.GetName());Console.ReadLine();Благодаря коду в методе
SetName()Console.WriteLine("***** Fun with Encapsulation *****\n");...<b>// Длиннее 15 символов! На консоль выводится сообщение об ошибке.</b>Employee emp2 = new Employee();emp2.SetName("Xena the warrior princess");Console.ReadLine();Пока все идет хорошо. Мы инкапсулировали закрытое поле
empNameGetName()SetName()EmployeeGetID()SetID()GetCurrentPay()SetCurrentPay()Инкапсуляция с использованием свойств
Хотя инкапсулировать поля данных можно с применением традиционной пары методов
getsetgetsetНиже приведен измененный код класса
Employeegetsetclass Employee{ // Поля данных. private string _empName; private int _empId; private float _currPay;<b> // Свойства!</b><b> public string Name</b><b> {</b><b> get { return _empName; }</b><b> set</b><b> {</b><b> if (value.Length > 15)</b><b> {</b><b> Console.WriteLine("Error! Name length exceeds 15 characters!");</b><b> // Ошибка! Длина имени превышает 15 символов!</b><b> }</b><b> else</b><b> {</b><b> _empName = value;</b><b> }</b><b> }</b><b> }</b> // Можно было бы добавить дополнительные бизнес-правила для установки // данных свойств, но в настоящем примере в этом нет необходимости.<b> public int Id</b><b> {</b><b> get { return _empId; }</b><b> set { _empId = value; }</b><b> }</b><b> public float Pay</b><b> {</b><b> get { return _currPay; }</b><b> set { _currPay = value; }</b><b> }</b>...}Свойство C# состоит из определений областей
getsetId// int представляет тип данных, инкапсулируемых этим свойством.public int Id // Обратите внимание на отсутствие круглых скобок.{ get { return _empId; } set { _empID = value; }}В области видимости
setvaluevaluevaluesetName
118
- Предыдущая
- 118/642
- Следующая
Перейти на страницу:
