Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Параметризированные конструкторыСодержание книги Поиск на нашем сайте
В предыдущем примере использовался конструктор без параметров. В некоторых случаях этого оказывается достаточно, но зачастую конструктор, должен принимать один или несколько параметров. В конструктор параметры вводятся таким же образом, как и в метод. Для этого достаточно объявить их в скобках после имени конструктора. Ниже приведен пример применения параметризированного конструктора MyClass. Листинг 6.9 // Параметризированный конструктор.
using System;
class MyClass { public int x;
public MyClass(int i) { x = i; } }
class ParmConsDemo { static void Main() { MyClass t1 = new MyClass(10); MyClass t2 = new MyClass(88);
Console.WriteLine(t1.x + " " + t2.x); } } При выполнении этого кода получается следующий результат. 10 88 В данном варианте конструктора MyClass() определен параметр i, с помощью которого инициализируется переменная экземпляра х. Поэтому при выполнении следующей строки кода: MyClass t1 = new MyClass(10); параметру i передается значение, которое затем присваивается переменной х. Добавление конструктора в класс Building Класс Building можно усовершенствовать, добавив в него конструктор, автоматически инициализирующий поля Floors, Area и Occupants при создании объекта. Обратите особое внимание на то, как создаются объекты класса Building. Листинг 6.10 // Добавить конструктор в класс Building.
using System;
class Building { public int Floors; // количество этажей public int Area; // общая площадь здания public int Occupants; // количество жильцов
// Параметризированный конструктор для класса Building. public Building(int f, int a, int o) { Floors = f; Area = a; Occupants = o; }
// Возвратить площадь на одного человека. public int AreaPerPerson() { return Area / Occupants; }
// Возвратить максимальное количество человек, занимающих здание // исходя из заданной минимальной площади на одного человека. public int MaxOccupant(int minArea) { return Area / minArea; } }
// Использовать параметризированный конструктор класса Building. class BuildingDemo { static void Main() { Building house = new Building(2, 2500, 4); Building office = new Building(3, 4200, 25);
Console.WriteLine("Максимальное количество человек в доме, \n" + "если на каждого должно приходиться " + 300 + "кв. футов: " + house.MaxOccupant(300));
Console.WriteLine("Максимальное количество человек " + "в учреждении, \n" + 300 + "кв. футов: " + office.MaxOccupant(300)); } } Результат выполнения этой программы оказывается таким же, как и в предыдущей ее версии. Оба объекта, house и office, были инициализированы конструктором Building() при их создании в соответствии с параметрами, указанными в этом конструкторе. Например, в строке Building house = new Building(2, 2500, 4); конструктору Building() передаются значения 2, 2500 и 4 при создании нового объекта. Следовательно, в копиях переменных экземпляра Floors, Area и Occupants объекта house будут храниться значения 2, 2500 и 4 соответственно. Еще раз об операторе new Теперь, когда вы ближе ознакомились с классами и их конструкторами, вернемся к оператору new, чтобы рассмотреть его более подробно. В отношении классов общая форма оператора new такова: new имя_класса (список_аргументов) где имя_класса обозначает имя класса, реализуемого в виде экземпляра его объекта. А имя_класса с последующими скобками обозначает конструктор этого класса. Если в классе не определен его собственный конструктор, то в операторе new будет использован конструктор, предоставляемый в C# по умолчанию. Следовательно, оператор new может быть использован для создания объекта, относящегося к классу любого типа. Оперативная память не бесконечна, и поэтому вполне возможно, что оператору new не удастся распределить память для объекта из-за нехватки имеющейся оперативной памяти. В этом случае возникает исключительная ситуация во время выполнения. В примерах программ, приведенных в этой книге, ситуация, связанная с исчерпанием оперативной памяти, не учитывается, но при написании реальных программ такую возможность, вероятно, придется принимать во внимание.
|
||||
Последнее изменение этой страницы: 2016-12-27; просмотров: 250; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.225.188 (0.005 с.) |