Singleton对象与类

时间:2016-06-05 17:58:22

标签: scala

我正在学习scala。我有一个基本问题。

我的问题不是关于上课。这是关于对象的。

我想了解scala的类实例与java类实例的区别。

我在scala中有以下代码

class Employee(var id:Int,var name:String)
{

    def show()
    {
      println("Id : " +id)
      println("Name :"+name)
    }

}

 object obj1
 {
     def main(args: Array[String])
     {
         val emp1 = new Employee(100,"Surender")
         emp1.show
     }
 }

我想知道什么是obj1?我们可以说obj1是类Employee的实例或类Employee的对象。

类似地,Obj1与emp1有何不同?

2 个答案:

答案 0 :(得分:0)

Obj1不是任何命名类的实例。它是(由scala隐式构造)匿名(不可访问)类的单个实例。我想你不能说obj1是Employee的实例。因此obj1是匿名类的实例,而emp1是Employee类的实例。

答案 1 :(得分:0)

object是定义类型并在单个声明中实例化它的简写。 obj1的类型为obj1.type(您可以通过在REPL中输入:t obj1来查看此内容。)

  

我们可以说obj1是类Employee的实例或类Employee的对象。

不,Employeeobj1之间没有任何关系。

  

Obj1与emp1有何不同?

他们是完全不同的东西。一个更贴切的问题是obj1emp1有什么共同之处?",答案仅仅是他们共享共同的祖先java.lang.Object,正如所有参考文献所做的那样。