Scala中的内部类
内部类意味着将一个类定义为另一个类。此功能使用户能够对仅在一个地方使用的类进行逻辑分组,从而增加了封装的使用,并创建了更具可读性和可维护性的代码。在 Scala 中,内部类的概念与Java不同。就像在Java中一样,内部类是外部类的成员,但在 Scala 中,内部类绑定到外部对象。
句法:
class Outer_class{
class Inner_class{
// Code..
}
}
例子:
// Scala program to illustrate how to
// create inner class
// Outer class
class Geek
{
// Inner class
class G1
{
var a = 0
def method()
{
for(a<-0 to 3)
{
println("Welcome to inner class: G1");
}
}
}
}
object Main
{
def main(args: Array[String])
{
// Creating object of the outer and
// inner class Here, G1 class is
// bounded with the object of Geek class
val obj = new Geek();
val o = new obj.G1;
o.method();
}
}
输出:
Welcome to inner class: G1
Welcome to inner class: G1
Welcome to inner class: G1
Welcome to inner class: G1
说明:在上面的例子中,Geek 是外部类,G1 是内部类。现在,要创建内部类的对象,首先需要创建外部类的对象,外部类的对象是obj。现在,obj 以 G1 类为前缀,并创建 G1 类的对象 o,因为内部类绑定到外部类的对象。
如何在对象内创建类和在类内创建对象
在 Scala 中,我们还可以在对象中包含类或在类中包含对象。让我们用一个例子来讨论。在下面的示例中,首先,我们在类中创建一个对象,并在 new 关键字的帮助下访问该对象的方法,然后是类名、对象名和方法名,如下面的语句所示:
new outer_class().inner_object.method;
现在,第二,我们在对象内部创建一个类,并使用 new 关键字访问该类中存在的方法,后跟对象名称、类名称和方法名称,如下面的语句所示:
new outer_object.inner_class().method;
例子 :
// Scala program to illustrate how to
// create an object inside a class, Or
// a class inside an object
// Class inside Object
class outer_class
{
object inner_object
{
val q = 0;
def method()
{
for(q <- 0 to 2)
{
println("object inside a class example")
}
println()
}
}
}
// Object inside Class
object outer_object
{
class inner_class
{
val s = 0;
def method()
{
for(s <- 0 to 2)
{
println("class inside an object example")
}
}
}
}
object Main
{
// Main method
def main(args: Array[String])
{
// Object inside a class
new outer_class().inner_object.method;
// Class inside an object
new outer_object.inner_class().method;
}
}
输出:
object inside a class example
object inside a class example
object inside a class example
class inside an object example
class inside an object example
class inside an object example