

{"id":17620,"date":"2018-06-05T04:10:51","date_gmt":"2018-06-05T04:10:51","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=17620"},"modified":"2021-12-04T10:15:33","modified_gmt":"2021-12-04T04:45:33","slug":"scala-singleton-object","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/","title":{"rendered":"Scala Object &#8211; Scala Singleton &amp; Scala Companion Object"},"content":{"rendered":"<p>In our last<strong><a href=\"https:\/\/data-flair.training\/blogs\/scala-tutorial\/\"> Scala Programming Tutorial<\/a><\/strong>, we talked about <strong><a href=\"https:\/\/data-flair.training\/blogs\/scala-annotations\/\">Scala Annotations<\/a><\/strong>. Today, we will discuss Scala Object and different types of Objects in Scala. Moreover, we sill see Scala singleton object with example and Scala companion objects with an example.<\/p>\n<p>So, let&#8217;s start Scala Singleton &amp; Scala Companion Object.<\/p>\n<div id=\"attachment_17632\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-17632\" class=\"wp-image-17632 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg\" alt=\"Scala Object - Scala Singleton &amp;amp; Scala Companion Object\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-17632\" class=\"wp-caption-text\">Scala Object &#8211; Scala Singleton &amp; Scala Companion Object<\/p><\/div>\n<h3 class=\"western\">Scala Singleton Objects<\/h3>\n<p>In Scala, an object is a class with exactly one instance. Like a lazy val, it creates lazily when we reference it. It is a value, and as a top-level value, it is a Scala singleton. To define an object, we use the keyword \u2018object\u2019:<\/p>\n<pre class=\"EnlighterJSRAW\">scala&gt; object Box\r\ndefined object Box<\/pre>\n<p>The methods we declare inside\u00a0Scala\u00a0singleton object are globally accessible, we don\u2019t need an object for this. We can import them from anywhere in the program. And since there is no idea of \u2018static\u2019 in Scala, we must provide a point of entry for the program to execute.\u00a0Scala singleton object makes for this. Without such an object, the code compiles but produces no output.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/scala-case-class\/\">Let&#8217;s Learn Scala Case Class and How to Create Scala Object<\/a><\/strong><br \/>\nConsider a package:<\/p>\n<pre class=\"EnlighterJSRAW\">package logging\r\nobject Logger{\r\ndef info(message:String):Unit=println(\"Info: \"+message)\r\n}\r\nNow consider another package:\r\nimport logging.Logger.info\r\nclass Project(name:String,days:Int)\r\nclass Test{\r\nval project1=new Project(\"Book writing\",365)\r\nval project2=new Project(\"Revision\",30)\r\ninfo(\"Planned\")\r\n}<\/pre>\n<p>With the import statement, we can use the method info() without a problem.<br \/>\nScala singleton object can also extend traits and classes.<\/p>\n<h3 class=\"western\">Scala Singleton Example<\/h3>\n<pre class=\"EnlighterJSRAW\">scala&gt; object SingletonObject{\r\n| def greet(){\r\n| println(\"Hello\")\r\n| }\r\n| }\r\ndefined object SingletonObject\r\nscala&gt; SingletonObject.greet()<\/pre>\n<p>Hello<br \/>\nAs you can see, we don\u2019t need an object to call the method greet() of this singleton object.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/scala-object-oriented-programming\/\">Do You Know Why\u00a0Scala Called Object Oriented Programming\u00a0<\/a><\/strong><\/p>\n<h3 class=\"western\">Scala Companion Object<\/h3>\n<p>Coming from\u00a0 singleton objects, we now discuss companion objects. A Scala companion object is an object with the same name as a class. We can call it the object\u2019s companion class. The companion class-object pair is to be in a single source file. Either member of the pair can access its companion\u2019s private members. Let\u2019s take an example.<\/p>\n<pre class=\"EnlighterJSRAW\">scala&gt; class CompanionClass{\r\n| def greet(){\r\n| println(\"Hello\")\r\n| }\r\n| }\r\ndefined class CompanionClass\r\nscala&gt; object CompanionObject{\r\n| def main(args:Array[String]){\r\n| new CompanionClass().greet()\r\n| println(\"Companion object\")\r\n| }\r\n| }\r\ndefined object CompanionObject<\/pre>\n<p>So, this was all about Scala Object Tutorial. Hope you like our explanation.<\/p>\n<h3 class=\"western\">Conclusion<\/h3>\n<p>Hence, after reading this Scala Object Tutorial, we got to know what is singleton object in Scala and how it provides an entry for program execution. In addition, we talked about Scala companion object, an object for a class with the same name. Furthermore, if have any doubt, feel free to ask in the comment section.<br \/>\nRelated Topic-\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/scala-array\/\">Scala Arrays and Multidimensional Arrays<\/a><\/strong><br \/>\n<strong><a href=\"https:\/\/docs.scala-lang.org\/tour\/singleton-objects.html\">For reference<\/a><\/strong><span hidden class=\"__iawmlf-post-loop-links\" data-iawmlf-links=\"[{&quot;id&quot;:1926,&quot;href&quot;:&quot;https:\\\/\\\/docs.scala-lang.org\\\/tour\\\/singleton-objects.html&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251009201642\\\/https:\\\/\\\/docs.scala-lang.org\\\/tour\\\/singleton-objects.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-10 10:43:29&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2025-12-25 18:32:41&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-07 07:40:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-23 01:33:39&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-01-31 12:08:17&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-12 17:26:35&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-20 05:27:03&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-02-28 04:42:53&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-03 12:48:20&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-03-11 21:43:47&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-11 07:01:40&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-14 07:53:31&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-04-26 05:21:34&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-07 05:35:57&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-10 12:15:59&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-22 06:04:42&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-05-29 11:24:48&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-06-05 08:25:22&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-06-21 07:52:48&quot;,&quot;http_code&quot;:206},{&quot;date&quot;:&quot;2026-07-01 15:16:46&quot;,&quot;http_code&quot;:206}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-07-01 15:16:46&quot;,&quot;http_code&quot;:206},&quot;process&quot;:&quot;done&quot;}]\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In our last Scala Programming Tutorial, we talked about Scala Annotations. Today, we will discuss Scala Object and different types of Objects in Scala. Moreover, we sill see Scala singleton object with example and&#46;&#46;&#46;<\/p>\n","protected":false},"author":6,"featured_media":17632,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[61],"tags":[2718,2719,4345,12416,12418,12508,12547,12548,12549,12568,12922],"class_list":["post-17620","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scala","tag-companion-object-in-scala","tag-companion-object-scala-example","tag-example-of-scala-singleton","tag-scala-companion-object","tag-scala-companion-object-apply","tag-scala-object","tag-scala-singleton","tag-scala-singleton-example","tag-scala-singleton-object","tag-scala-trait-companion-object","tag-singleton-object-in-scala"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Scala Object - Scala Singleton &amp; Scala Companion Object - DataFlair<\/title>\n<meta name=\"description\" content=\"Scala Object Tutorial-What is Scala Singleton Object, What is Scala Companion Object, Example of Scala Singleton Object, Example of Scala Companion Object\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scala Object - Scala Singleton &amp; Scala Companion Object - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Scala Object Tutorial-What is Scala Singleton Object, What is Scala Companion Object, Example of Scala Singleton Object, Example of Scala Companion Object\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-05T04:10:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-04T04:45:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Scala Object - Scala Singleton &amp; Scala Companion Object - DataFlair","description":"Scala Object Tutorial-What is Scala Singleton Object, What is Scala Companion Object, Example of Scala Singleton Object, Example of Scala Companion Object","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/","og_locale":"en_US","og_type":"article","og_title":"Scala Object - Scala Singleton &amp; Scala Companion Object - DataFlair","og_description":"Scala Object Tutorial-What is Scala Singleton Object, What is Scala Companion Object, Example of Scala Singleton Object, Example of Scala Companion Object","og_url":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-06-05T04:10:51+00:00","article_modified_time":"2021-12-04T04:45:33+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89"},"headline":"Scala Object &#8211; Scala Singleton &amp; Scala Companion Object","datePublished":"2018-06-05T04:10:51+00:00","dateModified":"2021-12-04T04:45:33+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/"},"wordCount":402,"commentCount":4,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg","keywords":["Companion Object In Scala","companion object scala example","Example of Scala Singleton","Scala Companion Object","scala companion object apply","Scala Object","Scala Singleton","Scala Singleton Example","Scala singleton Object","scala trait companion object","Singleton Object in Scala"],"articleSection":["Scala Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/","url":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/","name":"Scala Object - Scala Singleton &amp; Scala Companion Object - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg","datePublished":"2018-06-05T04:10:51+00:00","dateModified":"2021-12-04T04:45:33+00:00","description":"Scala Object Tutorial-What is Scala Singleton Object, What is Scala Companion Object, Example of Scala Singleton Object, Example of Scala Companion Object","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/scala-singleton-object\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/06\/Scala-Object-01.jpg","width":1200,"height":628,"caption":"Scala Object - Scala Singleton &amp; Scala Companion Object"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/scala-singleton-object\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Scala Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/scala\/"},{"@type":"ListItem","position":3,"name":"Scala Object &#8211; Scala Singleton &amp; Scala Companion Object"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/2c58ecb4f73a39f0ef993f1ddfcd7b89","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1ce4a0e3e542444fc73bbebf83e89e8b73e2d95ccb1fcee64da9945f078b97c5?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"The DataFlair Team provides industry-driven content on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our expert educators focus on delivering value-packed, easy-to-follow resources for tech enthusiasts and professionals.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam2\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/17620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=17620"}],"version-history":[{"count":6,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/17620\/revisions"}],"predecessor-version":[{"id":104753,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/17620\/revisions\/104753"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/17632"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=17620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=17620"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=17620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}