Similar presentations:
Классы
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;
}