73.92K
Category: programmingprogramming

Классы

1.

*

2.

* Конструкторы предназначены для инициализации
объекта. Они вызываются автоматически при
вызове операции new. Имя конструктора
совпадает с именем класса.
* Конструктор отличается от метода по следующим
параметрам:
* Конструктор не возвращает значений (даже
значений типа void),
* Класс может иметь несколько конструкторов,
которые отличаются друг от друга набором
параметров.
*

3.

* Класс может не иметь ни одного
конструктора. В этом случае компилятором
будет вызван конструктор по умолчанию,
который присвоит полям, которые не были
инициализированы значение 0 (для типовзначений) и null (для ссылочных типов).

4.

class Student
{
public string Name = "Noname"; //ФИО
public const string University = "ВГУ";
public int Group = 0; //группа
public int Kurs = 1; //Курс
double Marks = 0;
//средний балл, закрытое поле
}
*

5.

public Student() // конструктор по умолчанию
{
// поскольку все поля заполнены
//значениями по умолчанию,
//данный конструктор имеет пустое тело
}
public Student(string Name, int Group)
{
// заполнили часть полей
this.Name = Name;
this.Group = Group;
}
public Student(string Name, int Group, int Kurs)
{
// заполнили все поля
this.Name = Name;
this.Group = Group;
this.Kurs = Kurs;
}
Student Vasya = new
Student(); //конструктор по
умолчанию
Student Masha = new
Student(“Маша”, 4);
//заполним часть полей
Student Petya = new
Student(“Петя”, 1, 24); //
заполним все поля
м

6.

* Очевидно, что все конструкторы должны иметь разные
сигнатуры. Существует возможность вызвать конструктор
внутри конструктора. Например,
public Student(string Name, int Group, int Kurs):this (Name, Group)
{
// заполнили все поля
this.Kurs = Kurs;
}

7.

class Student
{
public string Name = "Noname"; //ФИО
public const string University = "ВГУ";
public int Group = 0; //группа
public int Kurs = 1; //Курс
double Marks = 0;
//средний балл, закрытое поле

}
*

8.

* Свойства служат для организации доступа к
полям класса. Как правило, свойства
определяются для закрытых полей класса и
имеют следующий синтаксис:
[спецификаторы] тип имя_свойства
{
[get код_доступа]
[set код_доступа]
}
*

9.

* Код доступа представляет собой блоки операторов,
которые выполняются при получении (код доступа get) или
установке (код доступа set) свойства
* Свойство может иметь одну и ветвей (get или set)
* Если не определено свойство get, то поле называется
полем только для записи, если не определено свойство
set, то поле называется полем только для записи.

10.

public double marks
{
get
{
return Marks;
}
set
{
Marks = value;
}
}
class Student
{
public string Name =
"Noname"; //ФИО
public const string
University = "ВГУ";
public int Group = 0;
//группа
public int Kurs = 1; //Курс
double Marks = 0;
//средний балл,
закрытое поле

}

11.

static void Main()
{
Student Petya = new Student(“Петя”, 1, 24);
// заполним все поля
Сonsole.WriteLine (Petya.Name);
Petya.marks = 2.6;
//воспользовались свойством
}

12.

* Индексаторы – это разновидность свойств.
* Индексаторы удобны для работы с
массивами, описанными в классах и
позволяют обращаться к элементам массива,
используя имя массива и индекс его
элемента в квадратных скобках.
*

13.

* Поскольку индексаторы являются частным
случаем свойства, синтаксис задания
индексатора аналогичен синтаксису задания
свойства.
[спецификаторы] тип this [список
параметров]
{
get код доступа
set код доступа
}
*

14.

class Student
{
public int this [int i]
{
public string Name =
"Noname";
public const string
University = "ВГУ";
public int Group = 0;
public int Kurs = 1;
int[] marks = {2,2,2,2}
get
{
if (i>=0 && i<
marks.Length)
return marks[i];
}
set
{
if (i>=0 && i<
marks.Length)
marks[i] = value;
}
}

15.

static void Main()
{
Student Vasya = new Student();
//создали экземпляр класса
for (int i=0; i<4; i++)
{
Vasya[i] = 5;
}
English     Русский Rules