Jason. Cała informatyka w jednym miejscu!

Zakończyliśmy wspólnie epizod z klasami danych. Teraźniejszy artykuł będzie poświęcony kolejnej sprawie pobocznej, która może się przydać w rozbudowanych klasach, ale już tych zwykłych. Pada teraz kolej na słowo kluczowe "constructor" w języku Kotlin, czyli programowanie konstruktorów dodatkowych!

"CONSTRUCTOR" W JĘZYKU KOTLIN POZWALA NA TWORZENIE ALTERNATYWNYCH KONSTRUKTORÓW!

Polityka dotycząca definiowania wielu konstruktorów mocno odbiega od tradycyjnego podejścia w Javie. Raz, to położenie konstruktora podstawowego i dodatkowego, a dwa, to użycie dodatkowych słów kluczowych tam, gdzie trzeba. Jak już dobrze wiecie z części o dziedziczeniu, konstruktor podstawowy "leży" obok nazwy klasy w obrębie nawiasów okrągłych.

class Point(tx: Int, ty: Int)

Mowa teraz o konstruktorze dodatkowym, bo tak jest on określany w terminologii Kotlina. Słowo kluczowe którym posługujecie się do definiowania konstruktorów dodatkowych to "constructor". Ale o wiele ważniejszą sprawą jest GDZIE go umieszczacie. Tym razem wewnątrz treści klasy, tak jak to było w Javie! Zerknijcie proszę na przykład praktyczny zastosowania "constructor" w języku Kotlin, który może Was zszokować (zwłaszcza wszystkich "Javowców"):

class Point(tx: Int, ty: Int) {
	constructor() : this(0, 0)
}

Definicja konstruktora dodatkowego jest prosta. Po słowie kluczowym "constructor" w języku Kotlin, wprowadzacie parę nawiasów okrągłych dla parametrów formalnych, później znak dwukropka i spotykacie nowe słowo kluczowe "this" oznaczające odwołanie się do samego siebie, do swoich danych składowych, metod i konstruktora. Samo "this" tak jak w tym przypadku, oznaczać będzie "skierowanie się" w stronę konstruktora podstawowego celem jego wywołania jako pierwszego. To już jest obowiązek! Zasada. Kompilator nie przepuści Was do uruchomienia bez odwołania się do konstruktora podstawowego.

Czy zauważyliście jeszcze jedną bardzo ważną rzecz? Jeśli rola konstruktora dodatkowego sprowadza się wyłącznie do przypisania innych wartości danych składowych według schematu konstruktora podstawowego, możemy pominąć nawiasy klamrowe! A kiedy ma wykonywać jakieś inne instrukcje poboczne, wtedy dopiero musimy je przywołać (w Javie trzeba było je umieścić bez względu na wszystko). To wszystko sprawia, że możemy "ścisnąć" nasz kod do granic wytrzymania i w zasadzie te same intencje skracamy do pojedynczej instrukcji. Następny dowód zwięzłości w języku Kotlin!

Rozumiem, że "constructor" w języku Kotlin może budzić zdziwienie, bo jest to zaproponowanie innego stylu zapisu. W języku Java to była sytuacja prosta, choć kodu DUŻO więcej:

public class Point {
	public int x;
	public int y;
	
	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}
	
	public Point() {
		this(0, 0);
	}
}

zatem dla mnie to absolutnie zrozumiałe, że trzeba zrobić przy tym przystanek i popatrzeć na przykłady kodów źródłowych nie raz, nie dwa, a kilkanaście razy!

Słowo kluczowe "constructor" w języku Kotlin

Słowo kluczowe "constructor" w języku Kotlin, w połączeniu ze słowem "this" umożliwia definiowanie konstruktorów dodatkowych otwierając drogę do tworzenia obiektów dysponując możliwością wyboru jednej z serii parametrów formalnych.


Nie dowierzacie, że to już koniec artykułu? Tak się złożyło, bo cóż innego można napisać o konstruktorach dodatkowych? Używajcie ich kiedy chcecie dać możliwość sobie i innym tworzenia instancji klas na kilka sposobów, czy raczej na kilka ścieżek wprowadzania parametrów formalnych. To, czy "constructor" w języku Kotlin ma mieć wpływ na dane składowe, czy służyć tylko w obrębie konstruktora, zależy już tylko od Was.

PODOBNE ARTYKUŁY