Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Конструктори Класу | Вступ до об'єктно-орієнтованого програмування (ООП)
C# Понад Базовий Рівень

bookКонструктори Класу

Конструктор класу є таким самим, як і конструктор структури. Це метод, який виконується під час створення об'єкта.

Синтаксис створення конструктора виглядає наступним чином:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Наприклад:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

З вихідних даних видно, що оператор Console.WriteLine, розміщений у конструкторі Player, виконується щоразу при створенні нового об'єкта.

Note
Примітка

У C# 9 та попередніх версіях C# існують деякі відмінності між конструкторами структур і класів. Наприклад, у старіших версіях не можна створювати конструктори без параметрів для структур, однак у C# 10 та новіших версіях це підтримується. Рекомендується використовувати найновішу версію компілятора C#, інакше під час компіляції деякого коду можуть виникати помилки.

Нижче наведено приклад коду з розділу Конструктори структур. Термін static пояснюється у коментарях, оскільки він є більш доречним саме тут, однак повне розуміння цього поняття не є обов'язковим на цьому етапі, оскільки воно буде детально розглянуте у наступних розділах.

Note
Примітка

На відміну від звичайних полів, статичне поле може зберігати дані навіть за відсутності об'єкта цього класу. Статичні поля мають однакове значення для всіх об'єктів, тому зміна значення статичного поля в одному об'єкті змінює його для всіх об'єктів. Клас Program представляє саму програму, тому якщо статичне поле є членом класу 'Program', воно виконує роль глобальної змінної.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Щоб перетворити структуру Player на клас, достатньо змінити ключове слово struct на class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Аналогічно, можна створювати конструктори з аргументами. Зазвичай цей підхід використовується для спрощення ініціалізації полів класу:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

На цьому етапі ви ознайомилися з більшістю базових понять щодо Classes, і, судячи зі синтаксису та поведінки, Classes здаються ідентичними до Structs, однак це не зовсім так. Як зазначалося у першому розділі цієї секції, Структури — це обмежена версія Класів, яка надає лише базову функціональність, тоді як можливості Класів значно складніші та ширші. У цій секції ви розглянули всі особливості, які є спільними для Classes і Structs. У наступних двох секціях ви дізнаєтеся про всі тонкощі класів та об'єктно-орієнтованого програмування.

1. Коли викликається метод-конструктор?

2. Якою буде назва методу конструктора у класі з ім’ям "Animal"?

3. Яке ключове слово використовується перед назвою конструктора?

question mark

Коли викликається метод-конструктор?

Select the correct answer

question mark

Якою буде назва методу конструктора у класі з ім’ям "Animal"?

Select the correct answer

question mark

Яке ключове слово використовується перед назвою конструктора?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 9

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

Can you explain the main differences between classes and structs?

What are some advanced features of classes that structs don't have?

Can you give examples of when to use a class instead of a struct?

Awesome!

Completion rate improved to 2.04

bookКонструктори Класу

Свайпніть щоб показати меню

Конструктор класу є таким самим, як і конструктор структури. Це метод, який виконується під час створення об'єкта.

Синтаксис створення конструктора виглядає наступним чином:

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Наприклад:

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

З вихідних даних видно, що оператор Console.WriteLine, розміщений у конструкторі Player, виконується щоразу при створенні нового об'єкта.

Note
Примітка

У C# 9 та попередніх версіях C# існують деякі відмінності між конструкторами структур і класів. Наприклад, у старіших версіях не можна створювати конструктори без параметрів для структур, однак у C# 10 та новіших версіях це підтримується. Рекомендується використовувати найновішу версію компілятора C#, інакше під час компіляції деякого коду можуть виникати помилки.

Нижче наведено приклад коду з розділу Конструктори структур. Термін static пояснюється у коментарях, оскільки він є більш доречним саме тут, однак повне розуміння цього поняття не є обов'язковим на цьому етапі, оскільки воно буде детально розглянуте у наступних розділах.

Note
Примітка

На відміну від звичайних полів, статичне поле може зберігати дані навіть за відсутності об'єкта цього класу. Статичні поля мають однакове значення для всіх об'єктів, тому зміна значення статичного поля в одному об'єкті змінює його для всіх об'єктів. Клас Program представляє саму програму, тому якщо статичне поле є членом класу 'Program', воно виконує роль глобальної змінної.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Щоб перетворити структуру Player на клас, достатньо змінити ключове слово struct на class:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Аналогічно, можна створювати конструктори з аргументами. Зазвичай цей підхід використовується для спрощення ініціалізації полів класу:

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

На цьому етапі ви ознайомилися з більшістю базових понять щодо Classes, і, судячи зі синтаксису та поведінки, Classes здаються ідентичними до Structs, однак це не зовсім так. Як зазначалося у першому розділі цієї секції, Структури — це обмежена версія Класів, яка надає лише базову функціональність, тоді як можливості Класів значно складніші та ширші. У цій секції ви розглянули всі особливості, які є спільними для Classes і Structs. У наступних двох секціях ви дізнаєтеся про всі тонкощі класів та об'єктно-орієнтованого програмування.

1. Коли викликається метод-конструктор?

2. Якою буде назва методу конструктора у класі з ім’ям "Animal"?

3. Яке ключове слово використовується перед назвою конструктора?

question mark

Коли викликається метод-конструктор?

Select the correct answer

question mark

Якою буде назва методу конструктора у класі з ім’ям "Animal"?

Select the correct answer

question mark

Яке ключове слово використовується перед назвою конструктора?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 9
some-alt