1.5. Klasy i obiekty
W pliku HelloWorldClass.scala znajduje się definicja przykładowej klasy.
Plik HelloWorldClass.scala: class HelloWorldClass { def hello = println("Hello world (class)!") }
Definicja tej klasy zaczyna się od słowa kluczowego class, po którym jest podana jej nazwa — HelloWorldClass. Po nazwie klasy, w nawiasach klamrowych, znajduje się ciało klasy, które zawiera definicję jednej metody bezparametrowej o nazwie hello.
Poniższe polecenia ładują zawartość pliku, a następnie tworzą obiekt będący instancją tej klasy. Do utworzenia instancji użyte jest wyrażenie, w którym po słowie kluczowym new podana jest nazwa klasy.
scala> :load HelloWorldClass.scala Loading HelloWorldClass.scala... defined class HelloWorldClass scala> val h = new HelloWorldClass h: HelloWorldClass = HelloWorldClass@2cb7c7
Referencja do utworzonej instancji przypisana zostaje do wartości niezmiennej o nazwie h. Konsola wypisała po znaku równości reprezentację tekstową instancji wskazywanej przez wartość h. W następujący sposób można wywołać metodę hello utworzonej instancji.
scala> h.hello Hello world (class)!
Język Scala pozwala również na definiowanie obiektów w inny sposób. Przykład takiej definicji znajduje się w pliku HelloWorldObject.scala. Definicja obiektu zaczyna się od słowa kluczowego object. W obiekcie HelloWorldObject jest zdefiniowana — podobnie jak w klasie HelloWorldClass — metoda hello.
Plik HelloWorldObject.scala: object HelloWorldObject { def hello = println("Hello world (object)!") }
Poniższy przykład ilustruje użycie obiektu HelloWorldObject. Odwołanie do niego następuje za pomocą jego nazwy. Metoda hello zostaje wywołana bezpośrednio na obiekcie — słowo kluczowe new nie jest użyte.
scala> :load HelloWorldObject.scala Loading HelloWorldObject.scala... defined object HelloWorldObject scala> HelloWorldObject.hello Hello world (object)!