Konstruktory
Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 7 z 70.
Konstruktor to specjalna metoda, która uruchamia się podczas tworzenia obiektu. Inicjalizuje właściwości i pola obiektu.
Konstruktor domyślny bez parametrów
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// Konstruktor domyślny
public Book()
{
Title = "Unknown";
Author = "Unknown";
}
}Konstruktor parametryzowany
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// Konstruktor z parametrami
public Book(string title, string author)
{
Title = title;
Author = author;
}
}Przeciążanie konstruktorów — wiele konstruktorów
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// Konstruktor z dwoma parametrami
public Book(string title, string author)
{
Title = title;
Author = author;
Pages = 0;
}
// Konstruktor z trzema parametrami
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
}Łańcuchowe wywoływanie konstruktorów za pomocą this
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// Główny konstruktor
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
// Wywołuje główny konstruktor z domyślną liczbą stron
public Book(string title, string author) : this(title, author, 0)
{
}
}Tworzenie obiektów za pomocą różnych konstruktorów
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);Konstruktory mają taką samą nazwę jak klasa i nie mają typu zwracanego. Uruchamiają się automatycznie, gdy używasz słowa kluczowego new. Możesz mieć wiele konstruktorów z różnymi parametrami (przeciążanie).
Wyzwanie
ŚredniUtwórz trzy konstruktory dla klasy Product, używając przeciążania i łańcuchowego wywoływania konstruktorów:
- Konstruktor z 3 parametrami: name, price i stock
- Konstruktor z 2 parametrami: name i price (stock domyślnie ma wartość 0)
- Konstruktor domyślny bez parametrów (name = "Unknown", price = 0, stock = 0)
Użyj łańcuchowego wywoływania konstruktorów z this, aby uniknąć duplikowania kodu.
Spróbuj swoich sił
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
int stock = int.Parse(Console.ReadLine());
Product product1 = new Product(name, price, stock);
Product product2 = new Product();
Product product3 = new Product("Keyboard", 79.99m);
Console.WriteLine($"Product 1: {product1.Name} - ${product1.Price} (Stock: {product1.Stock})");
Console.WriteLine($"Product 2: {product2.Name} - ${product2.Price} (Stock: {product2.Stock})");
Console.WriteLine($"Product 3: {product3.Name} - ${product3.Price} (Stock: {product3.Stock})");
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrznePrzestrzenie nazw i dyrektywyWprowadzenie do klas i obiektówSłowo kluczowe „this”Metody i parametryPola a właściwościKonstruktoryInicjalizatory obiektówPodsumowanie — prosty kalkulator4Dziedziczenie
Podstawowa składnia dziedziczenia (:)Słowo kluczowe 'base'Słowa kluczowe virtual i overrideKlasy sealedBazowa klasa 'object'Powtórzenie – hierarchia pracowników7Zaawansowane funkcje
Przeciążanie operatorówIndeksery (this[])Nadpisywanie ToString()Metody rozszerzającePodsumowanie – własna lista2Właściwości i składowe statyczne
Właściwości automatyczneWłaściwości tylko do odczytu i zapisuPola i metody statyczneKlasy statyczneSkładowe z ciałem wyrażeniowym5Polimorfizm i interfejsy
Polimorfizm czasu kompilacji a czasu wykonaniaInterfejs a klasa abstrakcyjnaWiele interfejsówJawne implementowanie interfejsówRzutowanie w górę i w dółPowtórka — kalkulator kształtów8Zaawansowane koncepcje OOP
Kompozycja zamiast dziedziczeniaTypy generyczne (klasy i metody)Delegaty i zdarzeniaAtrybuty i refleksjaIDisposable i instrukcja usingPodstawy wstrzykiwania zależności11Wzorce projektowe, część 2
Wzorzec poleceniaWzorzec adapteraWzorzec dekoratoraWzorzec metody szablonowejWzorzec stanuWzorzec kompozytu3Architektura klas
Dane instancji a dane statyczneSłowa kluczowe 'readonly' i 'const'Pola zapasowePowtórzenie — menedżer kont bankowych6Hermetyzacja
Modyfikatory dostępuWłaściwości w hermetyzacjiImplementacja ukrywania danychWzorce niezmiennościPowtórka — dane studentów9Argumenty zmiennej liczby
Słowo kluczowe „params”Parametry opcjonalneArgumenty nazwanePrzeciążanie metodPoćwicz samodzielnie: Kompilator C# online