Основы С# Лекция 5. 4 Классы. Конструкторы и
s#_5.4_lekciya.pptx
- Размер: 996.3 Кб
- Автор:
- Количество слайдов: 16
Описание презентации Основы С# Лекция 5. 4 Классы. Конструкторы и по слайдам
Основы С# Лекция 5. 4 Классы. Конструкторы и Деструкторы
ПАРАМЕТРИЧЕСКИЙ КОНСТРУКТОР И КОНСТРУКТОР УМОЛЧАНИЯ
Параметрический конструктор class My. Class { public string Name; public int Age; public My. Class( string n, int a) // параметрический конструктор { Name = n; Age = a; } public void write() { Console. Write. Line( «Имя: {0}\n. Возраст: {1}» , Name, Age); } } class Program { static void Main( string [] args) { My. Class who = new My. Class ( «Брайан Уилсон Керниган» , 74); who. write(); Console. Read. Line(); } }
Ключевое слово this Указатель this — это указатель на объект, для которого был вызван нестатический метод. Ключевое словоthisобеспечивает доступ к текущему экземпляру класса.
Ключевое слово this Варианты применения: 1. Для избегания конфликта имен между параметрами метода и членами объекта (при неоднозначность контекста). 2. Для организации связей между объектами одного класса. 3. Для обращения из одного конструктора класса к другому конструктору того же класса. 4. Для определения расширяющего метода
Ключевое слово this class My. Class { public char ch; public void Method 1( char ch) { ch = ch; } public void Method 2( char ch) { this. ch = ch; } } class Program { static void Main() { char my. CH = ‘A’ ; Console. Write. Line( «Исходный символ {0}» , my. CH); My. Class obj = new My. Class (); obj. Method 1(my. CH); Console. Write. Line( «Использование метода без ключевого слова this: {0}» , obj. ch); obj. Method 2(my. CH); Console. Write. Line( «Использование метода c ключевым словом this: {0}» , obj. ch); Console. Read. Line(); } }
Параметрические конструкторы class Car { private double mileage; private double fuel; public Car() { mileage = 0; fuel = 0; } public Car( double mileage, double fuel) { this. mileage = mileage; this. fuel = fuel; } } class Program { static void Main( string [] args) { Car new. Car = new Car (); // создаем автомобиль с параметрами по умолчанию, 0 и 0 Car new. Car 2 = new Car (100, 50); // создаем автомобиль с указанными параметрами Console. Read. Line(); } }
Параметрические конструкторы class Car { private double mileage; private double fuel; public Car( double mileage, double fuel) { this. mileage = mileage; this. fuel = fuel; } } class Program { static void Main( string [] args) { Car new. Car = new Car (100, 50); Car new. Car 2 = new Car (); // ошибка, в классе не определен конструктор без параметров } }
Конструктор: особенности Конструкторы одного класса должны отличаться сигнатурами. Сигнатура, в случае конструкторов, — это набор аргументов. Если в классе определен один или несколько конструкторов с параметрами, нельзя создавать объект через неявный конструктор по умолчанию.
КОНСТРУКТОР КОПИРОВАНИЯ
Конструктор копирования class CL { public int dom = 6; public CL() { } // Конструктор умолчания public CL( CL ob) { // Конструктор копирования dom = ob. dom; } class Program { static void Main() { CL one = new CL (); CL two = new CL (one); two. dom = 5*one. dom; Console. Write. Line( «one. dom=» +one. dom+ «, two. dom=» +two. dom); Console. Read. Line(); } }
КОНСТРУКТОР ПРИВЕДЕНИЯ ТИПОВ
Конструкторы
Конструкторs class Program { static void Main() { Real number. True = new Real (903. 0, 1); // Конструктор общего вида number. True. display( «number. True» ); Real number. Type = new Real (0. 000321); // Конструктор приведения типов number. Type. display( «number. Type» ); Real number. Copy = new Real (number. True); // Конструктор копирования number. Type = number. True; // Присваивание ссылок number. True. increment. M(); // Изменение объекта number. True. display( «number. True» ); number. Type. display( «number. Type» ); number. Copy. display( «number. Copy» ); // Копия сохранила значение Real number. Default = new Real (); // Конструктор умолчания number. Default. display( «number. Default» ); Console. Read. Line(); } }
ДЕСТРУКТОР
Деструкторы class Test { ~Test() { Console. Write. Line( «Destructor!» ); Console. Read. Line(); } class Program { static void Main() { Test b = new Test (); b = null ; }