Singleton Object
Scala はJavaよりオブジェクト指向の言語なので、Scalaにはstaticキーワードの概念がないのである。 静的キーワードの代わりに、Scalaはシングルトンオブジェクトを持っています。 シングルトンオブジェクトは、あるクラスの単一のオブジェクトを定義するオブジェクトです。 シングルトンオブジェクトは、プログラム実行のエントリーポイントを提供します。 もし、シングルトンオブジェクトを作らないと、コードのコンパイルは成功しても、出力が得られません。 そのため、プログラムの出力を得るために、シングルトンオブジェクトが必要になります。
Syntax:
object Name{// code...}
Important points about singleton object
- The method in the singleton object is globally accessible.Singleleton objectは、オブジェクトキーワードを使って生成されるオブジェクトです。
- シングルトンオブジェクトのインスタンスを作成することはできません。
- シングルトンオブジェクトの一次コンストラクタにパラメータを渡すことはできません。
- Scalaでは、シングルトン オブジェクトはクラスとtraitを拡張することができます。
- Scalaでは、シングルトンオブジェクトには必ずmainメソッドが存在します。
- シングルトンオブジェクトのメソッドはオブジェクト名でアクセスされるので(Javaのstaticメソッドの呼び出しと同じ)、このメソッドをアクセスするためにオブジェクトを作成する必要はありません。
例1:
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();
}
}
出力します。
Height of the rectangle is:40Length of the rectangle is:20Area of the rectangle is :800
例2:
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();
}
}
出力します。
Welcome ! GeeksforGeeksThis is Scala language tutorial
説明します。 上記の例では、ExampleofsingletonとMainという2つのシングルトンオブジェクトがあります。 Exampleofsingletonオブジェクトはdisplay()という名前のメソッドを含んでいるので、Mainオブジェクトでこのメソッドを呼び出すことにします。 Exampleofsingleton.display();という記述で、Exampleofsingletonオブジェクトに存在するdisplay()メソッドを呼び出し、出力を表示させています。
コンパニオンオブジェクト
コンパニオンオブジェクトとは、クラス名と同じ名前を持つオブジェクトとして知られています。 言い換えれば、あるオブジェクトとクラスが同じ名前であるとき、そのオブジェクトはコンパニオン・オブジェクトとして知られ、クラスはコンパニオン・クラスとして知られる。 コンパニオン・オブジェクトは、クラスが定義されているのと同じソース・ファイルで定義されます。 コンパニオン・オブジェクトは、クラスのプライベート・メソッドとプライベート・フィールドの両方にアクセスすることが許されます。
例
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();
}
}
出力されます。
GeeksforGeeksTutorial of Companion object