Technicznie, istnieje tylko jedna taka rzecz, w specyfikacji językowej nazywana jest ona najczęściej "modułem", ale można również znaleźć następujące stwierdzenie: "Definicja obiektu definiuje pojedynczy obiekt (lub: moduł) ..." (Scala Language Specification)
Ponadto, można mówić jedynie o towarzysz obiektu, podczas gdy w rzeczywistości towarzyszy coś:
„Generalnie, moduł towarzysz klasy to obiekt, który ma taką samą nazwę jak klasy i jest zdefiniowany w tym samym zakresie i jednostce kompilacji, natomiast klasa nazywa się klasa kompana modułu. " (jeszcze raz pomyśl: obiekt towarzyszący = moduł towarzyszący)
Stan towarzyszący dodaje funkcje do klasy towarzyszącej, a mianowicie widoczność (np. klasa może zobaczyć prywatne pola modułu towarzyszącego). Ten sam zakres i jednostka kompilacji oznacza, że muszą być zdefiniowane w tym samym pliku źródłowym i tym samym pakiecie.
Jest interesting thread on LtU gdzie obiekt Scala porównaniu modułu terminologii omawiane. Zawiera również link do pracy Odersky'ego i Zengera, jeśli jesteś zaintrygowany; pokazując, w jaki sposób szczególnie spojrzeli na system modułowy języka ML (OCaml ma duży wpływ na Scalę) i jak określają to jako różne podejścia do budowy modułowej (sugerując, że moduł jest bardziej ogólną koncepcją, cechy jako moduły mixin, ...)
Myślę, że 'module' był słowem kluczowym Scala w pewnym momencie. Został zmieniony na 'object', aby uczynić język (czuć) bardziej dostępnym dla głównych programistów. – missingfaktor
[To sedno] (https://gist.github.com/1324982) może być pomocne. – missingfaktor
Dziękujemy za dodatkowe informacje. –