Jason. Cała informatyka w jednym miejscu!

Nowy artykuł o Kotlinie! Przechodzimy teraz do części obiektowej prezentując Wam w jaki sposób definiuje się klasy przy użyciu "class" w języku Kotlin. Na początek same podstawy budulcowe. Jak utworzyć klasę? Jak tworzy się konstruktor? Jak "wyglądają" dane składowe czyli właściwości klasy? Jak bardzo różni się składnia odnośnie funkcji? Siadać, czytać, Jason da Wam odpowiedź.

"CLASS" W JĘZYKU KOTLIN. GDZIEŚ JUŻ TO SŁOWO KLUCZOWE WIDZIAŁEM...

Czytelnicy, uspokajam Was. Jak w Javie było "class", tak jest i tutaj, chociaż to dopiero początek:

class MyClass {

}

Proszę! Oto "najsurowsza" wersja klasy. Po słowie kluczowym podajecie nazwę, otwieracie parę klamerek dla ustalenia ciała klasy i koniec. Rozbudujmy tę klasę o kilka elementów.

KONSTRUKTOR I DANE SKŁADOWE

Słowo kluczowe "class" w języku Kotlin buduje klasy w sposób wyjątkowy. Konstruktora nie umieszcza się tak samo jak w Javie. On się znajduje...zaraz po nazwie pomiędzy nawiasami!

Jeśli zapomnicie wstawić nawiasików, nie lękajcie się. Kompilator zrobi to za Was:

class MyClass() {

}

Warto wspomnieć, że ten konkretny konstruktor, w Kotlinie określa się mianem "konstruktora podstawowego" (istnieją także niejakie "konstruktory dodatkowe"). Zastosowane podejście przypomina parametry formalne funkcji, tylko nie pomylcie się z rozpędu gdyż to różni się jednym drobnym szczegółem. Mianowicie, możecie wstawić albo dane składowe, albo parametry dla danych składowych!!! Przypadek pierwszy:

class MyClass(var x: Int, var y: Int) {

}

wejdzie w posiadanie identycznego efektu, co ten zapis "po Javowemu":

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

Przypadek #2 to sytuacja, kiedy "class" w języku Kotlin dysponuje parametrami, które mogą zostać użyte do przypisania wartości danym składowym lub do innych celów. Przenosząc te słowa na kod, tak jest Kotlin:

class MyClass(x: Int, y: Int) {
	var x = x
	var y = y
}

a w Javie będzie identycznie co w przykładzie powyżej. Chciałem Wam pokazać, że możecie tam wprowadzić zarówno dane składowe (zmienne tworzone za pomocą słowa kluczowego "var" i "val"), jak i parametry jako zmienne lokalne istniejące tylko w obrębie klamerek. Zatem:

  • jeśli to ma być dana składowa, dodajemy przedrostek "var" albo "val", w zależności od tego czy ma prawo podlegać późniejszym przypisaniom nowych referencji
  • jeśli to ma być parametr, nie dodajemy przedrostka charakterystycznego dla definiowania zmiennych i stosujemy te same zasady, co przy tworzeniu parametru funkcji

a w obu przypadkach trzymamy się obowiązku jawnego określenia typu!

Nic też nie stoi na przeszkodzie, aby dane składowe przyjmowały wartości początkowe. W tej sytuacji musi zadbać o to, aby znajdowały się wewnątrz ciała klasy:

class MyClass() {
	var x = 0
	var y = 0
}

No problem!

METODY KLASY

W kwestii definiowania metod dla klas, nie różni się to niczym od definiowania funkcji poza klasą. Wystarczy, że zdefiniujecie ją wewnątrz klamerek "class" i to wszystko! Klasa od tej chwili posiada własną metodę i zobaczcie, że nie musimy określać jej jako publicznej:

class MyClass(var x: Int, var y: Int) {
	fun doSomething() {
		
	}
}

Co do parametrów i innych spraw, obowiązują te same zasady opisane w artykule o funkcjach. Manewry dotyczące finalizowania, odziedziczania czy przesłaniania są jak najbardziej dopuszczalne.

Klasa w języku Kotlin

Definiując metodę w klasie, nie jest wymagane określania rodzaju dostępu w postaci "public" czy "private", choć Kotlin nie zabrania nakładania modyfikatorów.

TWORZENIE OBIEKTU NA BAZIE KLASY

Przechodzimy do ostatniego podpunktu jakim jest tworzenie obiektu po skorzystaniu z "class" w języku Kotlin. To RÓWNIEŻ różni się od Javy, ale tylko jednym małym szczegółem. Nie korzystamy z przedrostka "new":

val instance = MyClass(5, 3)

A ponadto, możemy spokojnie pominąć jawne określanie typu i to w zdecydowanej większości przypadków, gdyż nasz nowy typ danych jest niepowtarzalny i kompilator bez problemu domyśli się tego właściwego, chyba że zapragniemy podstawić typ pochodny do typu klasy bazowej (polimorfizm). To całkiem inna bajka.

Tworzenie obiektu w języku Kotlin

Tworząc obiekt na podstawie dowolnej klasy, ignoruje się słowo kluczowe "new" i zazwyczaj można spokojnie pominąć jawną definicję typu.

WYWOŁYWANIE METOD

Ten sam operator kropki pozwala na to samo wywoływanie metod klasy. Nic a nic się tu nie zmienia.

instance.doSomething()

To wszystko, drodzy moi! Traktujcie to jako wstęp do obiektowości, dlatego że za pomocą "class" w języku Kotlin można zrobić o wiele więcej z klasami. To jest dopiero preludium.

PODOBNE ARTYKUŁY