Singleton objektum
A Scala inkább objektumorientált nyelv, mint a Java, így a Scala nem tartalmazza a statikus kulcsszó fogalmát. A statikus kulcsszó helyett a Scala singleton objektummal rendelkezik. A singleton objektum egy olyan objektum, amely egy osztály egyetlen objektumát definiálja. A singleton objektum egy belépési pontot biztosít a program végrehajtásához. Ha nem hoz létre singleton objektumot a programjában, akkor a kódja sikeresen lefordítható, de nem ad kimenetet. Tehát egy singleton objektumra van szükséged ahhoz, hogy megkapd a programod kimenetét. A singleton objektumot az object kulcsszó használatával hozzuk létre.
Szintaktika:
object Name{// code...}
Fontos tudnivalók a singleton objektumról
- A singleton objektumban lévő metódus globálisan elérhető.
- Nem hozhatunk létre példányt a singleton objektumból.
- Nem adhatunk át paramétert a singleton objektum elsődleges konstruktorában.
- A Scalában a singleton objektum kiterjesztheti az osztályokat és a vonásokat.
- A Scalában egy fő metódus mindig jelen van a singleton objektumban.
- A singleton objektumban lévő metódus az objektum nevével érhető el (akárcsak a statikus metódus hívása a Java-ban), így nincs szükség objektum létrehozására a metódus eléréséhez.
1. példa:
class
AreaOfRectangle
{
var
length
=
20
;
var
height
=
40
;
def
area()
{
var
ar
=
length * height;
println(
"Height of the rectangle is:"
+ height);
println(
"Length of the rectangle is:"
+ length);
println(
"Area of the rectangle is :"
+ ar);
}
}
object
Main
{
def
main(args
:
Array)
{
var
obj
=
new
AreaOfRectangle();
obj.area();
}
}
Kimenet:
Height of the rectangle is:40Length of the rectangle is:20Area of the rectangle is :800
2. példa:
object
Exampleofsingleton
{
var
str
1
=
"Welcome ! GeeksforGeeks"
;
var
str
2
=
"This is Scala language tutorial"
;
def
display()
{
println(str
1
);
println(str
2
);
}
}
object
Main
{
def
main(args
:
Array)
{
Exampleofsingleton.display();
}
}
Kimenet:
Welcome ! GeeksforGeeksThis is Scala language tutorial
Magyarázat:
Welcome ! GeeksforGeeksThis is Scala language tutorial
Magyarázat: A fenti példában két singleton objektumunk van, a Exampleofsingleton és a Main. A Exampleofsingleton objektum tartalmaz egy display() nevű metódust, most ezt a metódust hívjuk meg a Main objektumban. Ezzel az utasítással Exampleofsingleton.display(); meghívjuk az Exampleofsingleton objektumban lévő display() metódust, és kinyomtatjuk a kimenetet.
Companion objektum
A Companion objektum olyan objektumként ismert, amelynek neve megegyezik az osztály nevével. Vagy Más szóval, ha egy objektumnak és egy osztálynak ugyanaz a neve, akkor ezt az objektumot társobjektumként, az osztályt pedig társosztályként ismerjük. A kísérő objektumot ugyanabban a forrásfájlban definiáljuk, amelyben az osztály definiálva van. A kísérőobjektum hozzáférhet az osztály privát metódusaihoz és privát mezőihez egyaránt.
Példa:
class
ExampleofCompanion
{
var
str
1
=
"GeeksforGeeks"
;
var
str
2
=
"Tutorial of Companion object"
;
def
show()
{
println(str
1
);
println(str
2
);
}
}
object
ExampleofCompanion
{
def
main(args
:
Array)
{
var
obj
=
new
ExampleofCompanion();
obj.show();
}
}
Kimenet:
GeeksforGeeksTutorial of Companion object