Основы С# Лекция 5.4 Классы. Конструкторы и Деструкторы

Скачать презентацию Основы С# Лекция 5.4 Классы. Конструкторы и Деструкторы Скачать презентацию Основы С# Лекция 5.4 Классы. Конструкторы и Деструкторы

S#_5.4_lekcija.pptx

  • Количество слайдов: 16

>Основы С# Лекция 5.4 Классы. Конструкторы и Деструкторы Основы С# Лекция 5.4 Классы. Конструкторы и Деструкторы

>Параметрический конструктор и конструктор умолчания Параметрический конструктор и конструктор умолчания

>Параметрический конструктор class MyClass     {     Параметрический конструктор class MyClass { public string Name; public int Age; public MyClass(string n, int a)// параметрический конструктор { Name = n; Age = a; } public void write() { Console.WriteLine("Имя: {0}\nВозраст: {1}", Name, Age); } } class Program { static void Main(string[] args) { MyClass who = new MyClass("Брайан Уилсон Керниган", 74); who.write(); Console.ReadLine(); } }

>Ключевое слово this Указатель this - это указатель на объект, для которого был вызван Ключевое слово this Указатель this - это указатель на объект, для которого был вызван нестатический метод. Ключевое слово this обеспечивает доступ к текущему экземпляру класса.

>Ключевое слово this Варианты применения: 1. Для избегания конфликта имен между параметрами метода и Ключевое слово this Варианты применения: 1. Для избегания конфликта имен между параметрами метода и членами объекта (при неоднозначность контекста). 2. Для организации связей между объектами одного класса. 3. Для обращения из одного конструктора класса к другому конструктору того же класса. 4. Для определения расширяющего метода

>Ключевое слово this  class MyClass     {   Ключевое слово this class MyClass { public char ch; public void Method1(char ch) { ch = ch; } public void Method2(char ch) { this.ch = ch; } } class Program { static void Main() { char myCH = 'A'; Console.WriteLine("Исходный символ {0}", myCH); MyClass obj = new MyClass(); obj.Method1(myCH); Console.WriteLine("Использование метода без ключевого слова this: {0}", obj.ch); obj.Method2(myCH); Console.WriteLine("Использование метода c ключевым словом this: {0}", obj.ch); Console.ReadLine(); } }

>Параметрические конструкторы class Car     {     Параметрические конструкторы 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 newCar = new Car(); // создаем автомобиль с параметрами по умолчанию, 0 и 0 Car newCar2 = new Car(100, 50); // создаем автомобиль с указанными параметрами Console.ReadLine(); } }

>Параметрические конструкторы class Car     {     Параметрические конструкторы 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 newCar = new Car(100, 50); Car newCar2 = new Car(); // ошибка, в классе не определен конструктор без параметров } }

>Конструктор: особенности Конструкторы одного класса должны отличаться сигнатурами. Сигнатура, в случае конструкторов, - это Конструктор: особенности Конструкторы одного класса должны отличаться сигнатурами. Сигнатура, в случае конструкторов, - это набор аргументов. Если в классе определен один или несколько конструкторов с параметрами, нельзя создавать объект через неявный конструктор по умолчанию.

>Конструктор копирования Конструктор копирования

>Конструктор копирования  class CL         { Конструктор копирования 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.WriteLine("one.dom="+one.dom+", two.dom="+two.dom); Console.ReadLine(); } }

>конструктор приведения типов конструктор приведения типов

>Конструкторы Конструкторы

>Конструкторs class Program         {  Конструкторs class Program { static void Main() { Real numberTrue = new Real(903.0, 1); // Конструктор общего вида numberTrue.display("numberTrue"); Real numberType = new Real(0.000321);// Конструктор приведения типов numberType.display("numberType"); Real numberCopy = new Real(numberTrue);// Конструктор копирования numberType = numberTrue; // Присваивание ссылок numberTrue.incrementM(); // Изменение объекта numberTrue.display("numberTrue"); numberType.display("numberType"); numberCopy.display("numberCopy"); // Копия сохранила значение Real numberDefault = new Real(); // Конструктор умолчания numberDefault.display("numberDefault"); Console.ReadLine(); } }

>Деструктор Деструктор

>Деструкторы   class Test         Деструкторы class Test { ~Test() { Console.WriteLine("Destructor!"); Console.ReadLine(); } } class Program { static void Main() { Test b = new Test(); b = null; } }