c concepts constructor
Цей посібник пояснює деякі важливі концепції програмування на C #, такі як конструктор, деструктори, статичний клас, структури та переліки:
В одному з наших попередніх підручників з Об'єктів та Класів ми дізналися, що таке клас та об'єкт.
Об'єкт схожий на реальний об'єкт, а клас - це логічна сукупність подібних видів об'єктів. Це один з найбільш фундаментальних типів, присутній у C #. У цьому підручнику ми глибоко заглибимося в інші пов’язані з цим поняттями C #.
=> Ознайомтесь із повною серією навчальних програм C # тут
У цьому підручнику ми дізнаємося про деякі важливі аспекти занять та про те, як ми можемо використовувати їх у своїх програмах. Ми спробуємо створити прості програми на C # на основі концепцій, про які ми дізналися в наших попередніх підручниках.
Що ви дізнаєтесь:
- Що таке конструктор в C #?
- Деструктори в C #
- Статичні члени в класі
- Статичний клас в C #
- Структури в C #
- Різниця між структурою та класом
- Структура: Визначення
- Перерахування на C #
- Властивості в C #
- Висновок
- Рекомендована література
Що таке конструктор в C #?
Конструктор - це особливий тип методу на мові програмування C #, який викликається або викликається автоматично, коли створюється об'єкт даного класу.
Її основною функцією є ініціалізація даних членів новоствореного об'єкта. Однією з найбільш відмітних особливостей конструктора є його назва. Він має ту саму назву, що і клас.
Конструктори в основному бувають двох типів:
- За замовчуванням
- Параметризовано
C # Конструктор за замовчуванням
Як випливає з назви, конструктор за замовчуванням є основним конструктором класу. Він не має жодних аргументів і безпосередньо викликається під час створення об’єкта.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Результатом роботи наступної програми буде:
Викликано конструктор
Пояснення
Ми визначили конструктор “Program” всередині класу “Program”. Тепер, коли ми ініціалізуємо клас усередині основного методу, конструктор викликається автоматично.
Отже, будь-який фрагмент коду, який ми зберігаємо всередині конструктора, буде викликаний. Тут ми надрукували повідомлення “Конструктор був викликаний” у фігурних дужках конструктора, тому, коли ми ініціалізуємо клас, конструктор за замовчуванням буде ініціалізований, і повідомлення буде надруковане як вихідний результат.
Параметризований конструктор
Як випливає з назви, параметризовані конструктори - це конструктор з параметрами. Ці конструктори використовуються для передачі різних значень об'єктам.
public class Details { public Details(int a, int b){ int c = a+b; Console.WriteLine('The sum is: '+ c); } } public class Program { public static void Main(string() args) { Details d = new Details(2, 3); } }
Результатом роботи наступної програми буде:
найкраще програмне забезпечення для мобільних шпигунів для android
Сума: 5
Пояснення
У нашому попередньому прикладі з конструктором за замовчуванням, ми маємо наш основний метод в тому ж класі. У цьому прикладі ми маємо основний метод в іншому класі.
У нас є один клас з назвою „Подробиці”, який містить параметризований конструктор, що приймає два цілих значення. Усередині конструктора ми друкуємо підсумовування цілих чисел. У нас є ще один клас під назвою “Program”, який містить наш основний метод. Усередині основного методу ми ініціалізували клас “Подробиці”.
Як пояснювалося раніше, при ініціалізації класу його конструктори викликаються автоматично. Таким чином, у цьому випадку було викликано наш метод конструктора “Деталі”, і коли ми передали параметр під час ініціалізації, він виводить результат.
Деструктори в C #
Деструктори якраз протилежні конструкторам. Це спеціальний метод класу, який викликається, коли об’єкт класу виходить за межі області дії. Подібно до конструктора, ім'я деструктора також точно таке саме, як і ім'я класу, але з префіксом «~» (тильда).
Деструктор не приймає жодного параметра, не повертає жодного значення. Деструктор руйнує об'єкти класу, отже, він в основному використовується для звільнення пам'яті після виконання програми. Ще одна важлива річ, яку слід зазначити щодо деструктора, - це те, що він не може бути ні перевантаженим, ні успадкованим.
Приклад деструкторів:
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } ~Program(){ Console.WriteLine('Destructor has been invoked'); } public static void Main(string() args) { Program p = new Program(); } }
Результатом роботи наступної програми буде:
Викликано конструктор
Викликано деструктор
Пояснення
Ми використовували той самий приклад, що і для вивчення конструктора. Ми щойно додали деструктор у клас програми (~ Program). Коли ми ініціалізуємо об'єкт класу, конструктор отримує виклик і створюється об'єкт класу. Це виводить на консоль фразу “Конструктор був викликаний”.
Коли виконання завершено, а об'єкт класу виходить за межі області застосування, програма рухається до деструктора. Потім викликається деструктор, який, у свою чергу, руйнує об’єкт. Тут ми надрукували повідомлення всередині деструктора, яке друкується на консолі після виклику деструктора.
Статичні члени в класі
Члени класу можуть бути оголошені статичними за допомогою ключового слова static. Коли об’єкт оголошено статичним, незалежно від кількості створених об’єктів буде лише одна копія статичного об’єкта.
Статичність означає, що для даного класу буде існувати один екземпляр члена. Це означає, що значення статичної функції або змінних всередині класу можна викликати, не створюючи для них об’єкта.
Статичні змінні використовуються для оголошення констант, оскільки їх значення можна отримати безпосередньо, викликаючи клас, а не створюючи його екземпляр.
Приклад:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string() args) { Details.stat(); } }
Результатом роботи наступної програми буде:
Викликаний статичний метод
Пояснення
У наведеному вище прикладі ми створили клас “Подробиці”, який містить статичний метод “stat”. У нас є ще один клас «Програма», який містить основний метод. У наших попередніх темах ми бачили, як ми можемо ініціалізувати клас для доступу до методів. Але, як ми вже обговорювали, статичні члени класу можуть бути доступні за допомогою ініціалізації об'єкта класу.
Таким чином, в основному методі ми щойно викликали метод, використовуючи клас безпосередньо, не створюючи жодного об’єкта. На виході програми виконується код, написаний всередині статичного методу. У цьому випадку ми надрукували повідомлення на консолі.
Статичний клас в C #
Статичний клас подібний до звичайного класу в C #. Статичний клас може мати лише статичні члени, і його неможливо створити. Статичний клас використовується для того, щоб переконатися, що клас не створюється. Статичний клас оголошується за допомогою ключового слова static перед ключовим словом під час оголошення.
Приклад:
public static class Details { public static void multiply(int a, int b){ int c = a*b; Console.WriteLine('Multiplication result is: '+c); } } public class Program { public static void Main(string() args) { Details.multiply(2,8); } }
Результатом роботи наступної програми буде:
Результат множення: 16
Пояснення
У наведеному вище прикладі ми створили статичний клас “Details”, а всередині статичного класу створили ще один статичний метод “multiply”. Усередині методу є кілька фрагментів коду, які ми хочемо виконати. У нас також є інший клас «Програма» з основним методом.
Усередині основного методу ми викликали метод множення, присутній всередині статичного класу. Якщо ви подивитесь на наш основний метод, то побачите, що ми не ініціалізували або створили об’єкт для статичного класу, натомість ми безпосередньо викликали клас із основного методу.
Таким чином, коли ми безпосередньо викликаємо метод множення, використовуючи ім'я класу та надаючи параметри, він виконує код і друкує висновок.
Структури в C #
Сутність типу значення в C # називається структурою. Це допомагає користувачеві зберігати пов’язані дані декількох різних типів даних в одній змінній. Як зазначено, структура - це сутність типу значення, яка містить поля, методи, конструктори, оператори, події тощо. Структура оголошується за допомогою ключового слова “struct”.
Особливості конструкцій:
- Він може включати константи, методи, властивості, індекс, оператори, конструктори тощо.
- Він не може мати жодного конструктора за замовчуванням.
- Він може реалізувати інтерфейс, але не може успадковувати з іншими структурами або класами.
- Структури потрібно ініціалізувати, використовуючи нове ключове слово для використання.
Різниця між структурою та класом
Структура та Клас можуть чимось схожими один на одного, але вони мають кілька відмінностей.
Відмінності включають:
- Структура - це тип значення, тоді як клас - тип посилання.
- Нове ключове слово потрібно для ініціалізації структур.
- Структури можуть мати лише параметризований конструктор, а з іншого боку, клас може мати як типові, так і параметризовані конструктори.
Структура: Визначення
Структуру можна визначити, використовуючи ключове слово struct. Структура може визначити новий тип даних із кількома різними членами програми.
Структура може бути ініціалізована подібним чином до ініціалізації об’єкта, тобто за допомогою нового ключового слова. Оскільки структура - це сутність типу значення, вона працює швидше, ніж об’єкт класу. Де б не було потреби зберігати дані, нам потрібно використовувати структуру. З іншого боку, якщо вам потрібно передати дані, то доцільно використовувати клас, а не структуру.
Приклад:
public struct Cuboid { public int length; public int width; public int height; } public class Program { public static void Main(string() args) { Cuboid cb = new Cuboid(); cb.length = 10; cb.width = 20; cb.height = 30; Console.WriteLine('The volume of cuboid is: {0}', (cb.length*cb.width*cb.height)); } }
Результатом роботи наступної програми буде:
sql запитує запитання та відповіді
Об'єм кубоїда: 6000
Пояснення
У наведеному вище прикладі ми визначили структуру кубоїда, всередині якої ми зберігали типи даних щодо довжини, ширини та висоти кубоїда. У нас є ще одна програма класу, де ми маємо основний метод.
В основному методі ми ініціалізуємо структуру “Cuboid”, використовуючи нове ключове слово. Потім ми використовували об’єкт для виклику та присвоєння значень типам даних, що зберігаються в структурі. Потім ми виконали операцію над змінними зі структури та надрукували результат на консолі.
Отже, якщо ви хочете використовувати будь-які властивості, події чи методи, структуру потрібно ініціалізувати за допомогою нового ключового слова, інакше це дасть вам помилку компіляції.
Перерахування на C #
Enum - це набір цілочисельних констант і, подібно до структури, це також сутність типу значення. В основному він використовується для оголошення списку цілих чисел за допомогою ключового слова “enum” всередині простору імен, класу або навіть структури. У enum ми надаємо ім'я кожній з цілочисельних констант, щоб ми могли посилатися на них, використовуючи їх відповідні імена.
Enum може мати фіксовану кількість констант. Це допомагає поліпшити безпеку, і його також можна подолати.
Особливості Enum
- Enum покращує читабельність і ремонтопридатність коду, надаючи значущі імена константам.
- Enum не можна використовувати з константами типу рядка.
- Enum може включати такі константи, як int, long, short, byte тощо.
- За замовчуванням значення констант переліку починається з нуля
Оголошення переліку
Синтаксис оголошення enum наведено нижче.
enum { list of integer constants };
Усі константи переліку мають значення за замовчуванням. Значення починається з 0 і рухається вгору по черзі.
Приклад:
public enum Cuboid{ length, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Результатом роботи наступної програми буде:
Довжина: 0
Ширина: 1
Висота: 2
Пояснення
Ми працювали з подібним прикладом, який ми дізналися під час struct. У цьому прикладі ми створили перелік із іменем Cuboid. Цей перелік містить три члени, тобто довжину, ширину та висоту.
У нас є інша програма класу, всередині якої ми маємо основний метод. Явний привід був використаний для перетворення змінних типу enum у цілочисельний тип, тоді ми зберегли їх значення в різних змінних всередині основного методу та надрукували їх на консолі.
За замовчуванням значення першого переліку буде дорівнювати нулю, друге - 1 і так далі. Отже, коли ми друкували значення, ми отримували вищезазначені результати.
Зміна значення переліку
Enum також дозволяє користувачам змінювати початковий індекс учасників за замовчуванням. Після того, як ви змінили початковий індекс змінної, значення наступних членів оновлюватимуться в поступовій послідовності.
Давайте призначимо значення першому члену переліку, який ми визначили в нашому попередньому прикладі, і подивимося, що станеться:
public enum Cuboid { length = 10, width, height } public class Program { public static void Main(string() args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Результатом роботи наступної програми буде:
Довжина: 10
Ширина: 11
Висота: 12
Пояснення
Коли ми призначили першому члену переліку значення, тоді всі наступні члени переліку отримають призначення із збільшенням цього значення. Як ми визначили, перше значення як 10, наступне значення стає 11, а наступне стає 12.
Користувач може призначити будь-яке значення за власним вибором, і всі члени переліку отримають автоматичне присвоєння із збільшенням визначених користувачем значень.
Властивості в C #
Властивості в C # в основному є іменованими членами інтерфейсу, класів та структури. Властивості є розширенням змінних-членів / методу struct або класу. Вони використовуються для читання, запису або зміни значення приватних полів.
Доступ до властивостей здійснюється так само, як і до полів. Вони мають аксесуари, які можна використовувати для отримання, встановлення та обчислення значень. Ми також можемо вкладати логіку, встановлюючи значення у властивостях. Він також може використовуватися з приватним класом, який обмежує доступ ззовні, але в той же час це дозволяє користувачеві використовувати властивості для отримання або встановлення значень.
Що таке аксесуари?
Доступники властивості складають твердження, які можна використовувати для читання, запису або обчислення даного властивості. Декларація про майно може містити get, set або те й інше.
Приклад:
public class Cube { private int side; //Declare a Side property of type integer public int Side{ get{ return side; } set{ side = value; } } } public class Program { public static void Main(string() args) { Cube cb = new Cube(); cb.Side = 5; Console.WriteLine('The volume of cube is :{0}', (cb.Side * cb.Side* cb.Side)); } }
Коли вищезазначений фрагмент коду успішно скомпільовано та виконано, спостерігається наступний результат.
Обсяг куба: 125
Пояснення
У наведеному вище прикладі ми маємо клас “Cube”, всередині якого ми оголосили властивість “Side” цілого типу. Після цього ми маємо get і set властивість, куди ми повернулися і надали значення стороні змінної.
безкоштовне програмне забезпечення годинника для малого бізнесу - -
У нас є інший клас “Програма” з основним методом, всередині якого ми ініціалізували клас Cube і надали значення властивості Side, а потім надрукували обчислений результат на консолі.
Висновок
У цьому посібнику ми дізналися про функції члена класу. Функція-член може працювати з будь-яким об'єктом класу, де вона присутня. Ми також дізналися про конструктори та деструктори.
Конструктори ініціалізуються автоматично під час створення об'єкта класу, тоді як деструктори руйнують клас і в основному використовуються для видалення виділення пам'яті після завершення виконання. Конструктори можуть бути двох типів, тобто стандартні та параметризовані.
Деструктор не приймає жодного параметра і не повертає жодного значення. І конструктор, і деструктор мають імена, які точно відповідають імені класу. Ми також дізналися про статичні змінні та статичний клас і про те, як до них можна отримати доступ, не використовуючи екземпляри класів. Ми дізналися, що статичний клас може мати лише статичні члени.
Ми також обговорили структури або структури. Структури є сутностями типу значення і їх потрібно ініціалізувати для доступу.
Також були обговорені кількість та властивості C #. Enum - це набір іменованих цілочисельних констант. Подібно до структури, це також сутність типу значення. Перерахування матиме своїх членів, і кожен член матиме своє значення за замовчуванням.
Наприкінці ми обговорили властивості, які є продовженням змінних-членів / методу struct або класу. Вони використовуються для отримання, встановлення або зміни значення приватних полів.
=> Подивіться нашу повну серію навчальних програм C # тут
Рекомендована література
- Статична в C ++
- Спадкування в C ++
- Класи та об'єкти в C ++
- Використання класу Selenium Select для обробки випадаючих елементів на веб-сторінці - Підручник селену №13
- Поліморфізм виконання в C ++
- Функції друзів в C ++
- Знущання над приватними, статичними та недійсними методами за допомогою Mockito
- Класи та об'єкти C #: поглиблений посібник із прикладами