2016-06-05 4 views
0

Я изучаю scala. У меня есть один основной вопрос.Как отличается объект Singleton от экземпляра класса

Мой вопрос не касается класса. Речь идет об объектах.

Я хотел бы понять, как экземпляр класса scala отличается от экземпляра класса Java.

У меня есть ниже код в Скале

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?

+1

Возможный дубликат [Разница между объектом и классом в Scala] (http://stackoverflow.com/questions/1755345/difference-between-object-and-class-in-scala) – baudo2048

ответ

0

object является сокращением для определения типа и его экземпляра в одном объявлении. Тип obj1 - obj1.type (вы можете увидеть это, введя :t obj1 в REPL).

Можем ли мы сказать, что obj1 является экземпляром класса Employee или объектом класса Employee.

Нет, нет никакой связи между Employee и obj1.

Как Obj1 отличается от emp1?

Это совершенно разные вещи. Более подходящий вопрос был бы «что у obj1 есть с emp1?», На что ответ заключается только в том, что они разделяют общего предка java.lang.Object, как и все ссылки.

+0

Они также могут обращаться к частным лицам друг друга поля, как здесь: http://stackoverflow.com/a/1755942/4496364. –

+0

@ insan-e, нет, для этого он должен быть сопутствующим объектом. Это не так в этом вопросе. – pedrofurla

0

Obj1 не является экземпляром любого именованного класса. Это единственный экземпляр (анонимный (недоступный) класс (неявный, построенный scala)). Я думаю, вы не можете сказать, что obj1 является экземпляром Employee. Таким образом, obj1 является экземпляром анонимного класса, а emp1 является экземпляром класса Employee.

Смежные вопросы