Site icon C1CTech

Kotlin Companion objects

&NewLine;<p>This tutorial is about companion objects in Kotlin with the help of examples&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"p1">Kotlin doesn&&num;8217&semi;t have a&nbsp&semi;<span style&equals;"color&colon; &num;008000&semi;"><strong>static<&sol;strong><&sol;span> keyword&period; Static members belong to a type&comma; and not to an instance of a type&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"p1">In kotlin to achieve this static feature&comma; we make use of <span style&equals;"color&colon; &num;0000ff&semi;"><strong>companion object<&sol;strong><&sol;span>&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<h3 class&equals;"wp-block-heading"><span style&equals;"color&colon; &num;000080&semi;"><strong>companion object<&sol;strong><&sol;span><&sol;h3>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"p1">An object declaration inside a class can be marked with the&nbsp&semi;<span style&equals;"color&colon; &num;008000&semi;"><strong>companion<&sol;strong><&sol;span> keyword known as <span style&equals;"color&colon; &num;0000ff&semi;"><strong>companion object<&sol;strong><&sol;span>&period; There can only be&nbsp&semi;<span style&equals;"color&colon; &num;0000ff&semi;"><strong>one companion object<&sol;strong><&sol;span> in a class and it&nbsp&semi;is&nbsp&semi;<span style&equals;"color&colon; &num;008000&semi;"><strong>initialized<&sol;strong><&sol;span>&nbsp&semi;when the&nbsp&semi;<span style&equals;"color&colon; &num;0000ff&semi;"><strong>class is loaded<&sol;strong><&sol;span>&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example&colon;<&sol;strong><&sol;span><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-preformatted">class User &lbrace;&NewLine; companion object Test &lbrace;&NewLine; fun show&lpar;&rpar; &equals; println&lpar;"I'm inside companion object"&rpar;&NewLine; &rcub;&NewLine;&rcub;<&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<ul class&equals;"wp-block-list"><li><span style&equals;"color&colon; &num;000000&semi;">Here&comma;<&sol;span><strong><span style&equals;"color&colon; &num;0000ff&semi;"> Test<&sol;span><&sol;strong> object declaration is marked with keyword <strong><span style&equals;"color&colon; &num;0000ff&semi;">companion<&sol;span><&sol;strong>&nbsp&semi; to create a companion object&period;<&sol;li><&sol;ul>&NewLine;&NewLine;&NewLine;&NewLine;<p>Members of the companion object can be called by using simply the class name as the qualifier&period;<&sol;p>&NewLine;<&excl;-- WP QUADS Content Ad Plugin v&period; 2&period;0&period;98&period;1 -->&NewLine;<div class&equals;"quads-location quads-ad2" id&equals;"quads-ad2" style&equals;"float&colon;none&semi;margin&colon;0px&semi;">&NewLine;&NewLine;<&sol;div>&NewLine;&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-preformatted">fun main&lpar;&rpar; &lbrace;&NewLine; User&period;show&lpar;&rpar;&NewLine;<strong>&sol;&sol;or<&sol;strong>&NewLine; User&period;Test&period;show&lpar;&rpar;&NewLine;&rcub;<&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-preformatted">I'm inside companion object&NewLine;I'm inside companion object<&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p class&equals;"p1">The name of the companion object can be omitted and if the companion object name is missing&comma; the default name <span style&equals;"color&colon; &num;008000&semi;"><strong>Companion<&sol;strong><&sol;span>&nbsp&semi;is assigned to it&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-preformatted">class User &lbrace;&NewLine; companion object &lbrace;&NewLine; fun show&lpar;&rpar; &equals; println&lpar;"I'm inside companion object"&rpar;&NewLine; &rcub;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;&rpar; &lbrace;&NewLine; User&period;show&lpar;&rpar;&NewLine; User&period;Companion&period;show&lpar;&rpar;&NewLine;&rcub;<&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p>Similar to normal objects&comma; companion objects cannot have constructors&comma; but can extend other classes and implement interfaces&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example&colon;<&sol;strong><&sol;span><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<p><span style&equals;"color&colon; &num;008000&semi;"><strong>companion object<&sol;strong><&sol;span> implementing interface <span style&equals;"color&colon; &num;008000&semi;"><strong>Runnable<&sol;strong><&sol;span>&period;<&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-preformatted">class User &lbrace;&NewLine; companion object &colon; Runnable &lbrace;&NewLine; override fun run&lpar;&rpar; &lbrace;&NewLine; println&lpar;"run method invoked"&rpar;&NewLine; &rcub;&NewLine; &rcub;&NewLine;&rcub;&NewLine;&NewLine;fun main&lpar;&rpar; &lbrace;&NewLine; User&period;run&lpar;&rpar;&NewLine;<span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;or<&sol;strong><&sol;span>&NewLine; User&period;Companion&period;run&lpar;&rpar;&NewLine;&rcub;<&sol;pre>&NewLine;&NewLine;&NewLine;&NewLine;<p><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output&colon;<&sol;strong><&sol;span><&sol;p>&NewLine;&NewLine;&NewLine;&NewLine;<pre class&equals;"wp-block-preformatted">run method invoked&NewLine;run method invoked<&sol;pre>&NewLine;&NewLine;

Exit mobile version