Site icon C1CTech

Kotlin Class and Objects

<p>In this article&comma; you will be introduced with the basic OOPs concept i&period;e&period; Classes and Objects and how you can create classes and objects in your Kotlin program&period;<&sol;p>&NewLine;<p>Kotlin supports both functional and object-oriented programming&period;<&sol;p>&NewLine;<p>Kotlin supports features such as higher-order functions&comma; function types&comma; and lambdas which represent Kotlin as a functional language&period; We will learn about these concepts in later chapters&period;<&sol;p>&NewLine;<p>In this article&comma; we will focus on the basic object-oriented programming concept &lpar;OOPs&rpar; ie&period; <span style&equals;"color&colon; &num;008000&semi;"><strong>Classes and Objects<&sol;strong><&sol;span>&period;<&sol;p>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Kotlin Objects<&sol;strong><&sol;span><&sol;h3>&NewLine;<p><strong><span style&equals;"color&colon; &num;008000&semi;">Object<&sol;span><&sol;strong> refers to an entity that has state and behavior&period;<&sol;p>&NewLine;<p><strong><span style&equals;"color&colon; &num;0000ff&semi;">State<&sol;span><&sol;strong>&colon; represents the data &lpar;properties&rpar; of an object&period;<br &sol;>&NewLine;<strong><span style&equals;"color&colon; &num;0000ff&semi;">Behavior<&sol;span><&sol;strong>&colon; represents the behavior &lpar;functionality&rpar; of an object&period;<&sol;p>&NewLine;<p>Let’s take few examples&colon;<&sol;p>&NewLine;<p>1 &period; car is an object<&sol;p>&NewLine;<p>It has model&comma; color&comma; weight&comma; price as states&period;<br &sol;>&NewLine;speedup&comma; changing gears&comma; driving&comma; etc&period; behavior&period;<&sol;p>&NewLine;<p>2 &period; account is an object<&sol;p>&NewLine;<p>It has account no&comma; type&comma; balance as states&period;<br &sol;>&NewLine;deposit&comma; withdrawal&comma; etc&comma; are its behavior&period;<&sol;p>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Kotlin Class<&sol;strong><&sol;span><&sol;h3>&NewLine;<p>A <span style&equals;"color&colon; &num;008000&semi;"><strong>Class<&sol;strong><&sol;span> is a way to bind the data &lpar;properties&rpar; describing an object and its associated functions together&period;<&sol;p>&NewLine;<p>Classes are needed to represent real-world entities that not only have properties &lpar;their characteristics&rpar; but also have associated operations &lpar;their behavior&rpar;&period;<&sol;p>&NewLine;<h4><strong><span style&equals;"color&colon; &num;0000ff&semi;">How to define a class in Kotlin&quest;<&sol;span><&sol;strong><&sol;h4>&NewLine;<p>To define a class in Kotlin&comma; <strong><span style&equals;"color&colon; &num;008000&semi;">class <&sol;span><&sol;strong><span style&equals;"color&colon; &num;008000&semi;"><span style&equals;"color&colon; &num;000000&semi;">keyword is used&period;<&sol;span><&sol;span><&sol;p>&NewLine;<h4><strong><span style&equals;"color&colon; &num;0000ff&semi;">Syntax&colon;<&sol;span><&sol;strong><&sol;h4>&NewLine;<p>The syntax of defining a class in Kotlin&colon;<&sol;p>&NewLine;<pre><span style&equals;"color&colon; &num;0000ff&semi;"><strong>class<&sol;strong><&sol;span> ClassName &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;property&NewLine; &sol;&sol;member function<&sol;strong><&sol;span>&NewLine;&rcub;<&sol;pre>&NewLine;<p>In Kotlin&comma; either the property must be <strong><span style&equals;"color&colon; &num;008000&semi;">initialized<&sol;span><&sol;strong> or must be declared <strong><span style&equals;"color&colon; &num;008000&semi;">abstract<&sol;span><&sol;strong>&period;<&sol;p>&NewLine;<p><span style&equals;"color&colon; &num;008000&semi;"><strong>ClassName<&sol;strong><&sol;span> should use UpperCamelCase&period; For example&comma; ClassAndObjectsDemo&period;<&sol;p>&NewLine;<h4><strong><span style&equals;"color&colon; &num;0000ff&semi;">Example&colon; Kotlin class<&sol;span><&sol;strong><&sol;h4>&NewLine;<pre>class Account &lbrace;&NewLine; <span style&equals;"color&colon; &num;008000&semi;"><strong>&sol;&sol;properties<&sol;strong><&sol;span>&NewLine; private var type&colon; String &equals; ""&NewLine; private var accountNo&colon; Int &equals; 0&NewLine; private var balance&colon; Float &equals; 0f&NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;member functions<&sol;span><&sol;strong>&NewLine; fun deposit&lpar;amount&colon; Float&rpar; &lbrace;&NewLine; balance &equals; balance &plus; amount&NewLine; &rcub;&NewLine;&NewLine; fun withdraw&lpar;amount&colon; Float&rpar; &lbrace;&NewLine; balance &equals; balance - amount&NewLine; &rcub;&NewLine;&rcub;<&sol;pre>&NewLine;<h4><strong><span style&equals;"color&colon; &num;0000ff&semi;">Example explained<&sol;span><&sol;strong><&sol;h4>&NewLine;<ul>&NewLine;<li>The data describing an account &lpar;i&period;e&period;&comma; account no&comma; type and balance&rpar; and its associated operations &lpar;deposit and withdraw&rpar; are bound together under one name <span style&equals;"color&colon; &num;0000ff&semi;"><strong>Account<&sol;strong><&sol;span> &lpar;ClassName&rpar;&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<p>The keyword <span style&equals;"color&colon; &num;008000&semi;"><strong>private<&sol;strong><&sol;span> in the above example&comma; is an access modifier which we will discuss in detail in later chapters&period; For now&comma; just remember&colon;<&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;<ul>&NewLine;<li>The <span style&equals;"color&colon; &num;008000&semi;"><strong>private<&sol;strong><&sol;span> keyword makes properties and member functions private which can only be accessed inside the same class&period;<&sol;li>&NewLine;<li>In Kotlin&comma; by default properties and member functions are <strong><span style&equals;"color&colon; &num;008000&semi;">public <&sol;span><&sol;strong><span style&equals;"color&colon; &num;000000&semi;">&lpar;no need to write public keyword&rpar;<&sol;span> which can be accessed from outside the class&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h3><&sol;h3>&NewLine;<h3><strong><span style&equals;"color&colon; &num;000080&semi;">Creating Objects<&sol;span><&sol;strong><&sol;h3>&NewLine;<ul>&NewLine;<li>To access members defined within the class&comma; you need to create objects&period;<&sol;li>&NewLine;<li>You can create multiple objects of the same class&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;<h4><strong><span style&equals;"color&colon; &num;0000ff&semi;">Syntax&colon;<&sol;span><&sol;strong><&sol;h4>&NewLine;<p>The syntax of creating an object of a class&colon;<&sol;p>&NewLine;<pre>var obj &equals; className&lpar;&rpar;<&sol;pre>&NewLine;<h4><strong><span style&equals;"color&colon; &num;0000ff&semi;">Example&colon; Creating objects of a class<&sol;span><&sol;strong><&sol;h4>&NewLine;<pre>class Account &lbrace;&NewLine;&NewLine; var type&colon; String &equals; ""&NewLine; var accountNo&colon; Int &equals; 0&NewLine; var balance&colon; Float &equals; 0f&NewLine;&NewLine; fun deposit&lpar;amount&colon; Float&rpar; &lbrace;&NewLine; balance &equals; balance &plus; amount&NewLine; &rcub;&NewLine;&NewLine; fun withdraw&lpar;amount&colon; Float&rpar; &lbrace;&NewLine; balance &equals; balance - amount&NewLine; &rcub;&NewLine;&rcub;&NewLine;<strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;account1 and account2 are two objects of class Account<&sol;span><&sol;strong>&NewLine;fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <span style&equals;"color&colon; &num;0000ff&semi;"><strong> var account1 &equals; Account&lpar;&rpar;&NewLine; var account2 &equals; Account&lpar;&rpar;<&sol;strong><&sol;span>&NewLine;&rcub;<&sol;pre>&NewLine;<h4><&sol;h4>&NewLine;<h4><span style&equals;"color&colon; &num;0000ff&semi;"><strong>How to access class members&quest;<&sol;strong><&sol;span><&sol;h4>&NewLine;<p>You can access class members &lpar;call functions and access properties&rpar; by using the dot&lpar;&period;&rpar; operator&period;<&sol;p>&NewLine;<p>For example&comma; member functions of a class can be accessed as &colon;<&sol;p>&NewLine;<pre>account&period;deposit&lpar;&rpar;<&sol;pre>&NewLine;<p>This statement calls the <strong><span style&equals;"color&colon; &num;008000&semi;">deposit&lpar;&rpar;<&sol;span><&sol;strong> method inside the <strong><span style&equals;"color&colon; &num;0000ff&semi;">Account<&sol;span><&sol;strong> class for an <strong><span style&equals;"color&colon; &num;008000&semi;">account<&sol;span><&sol;strong> object&period;<&sol;p>&NewLine;<p>When you call the function using the above statement&comma; all statements within the body of <span style&equals;"color&colon; &num;008000&semi;"><strong>deposit&lpar;&rpar;<&sol;strong><&sol;span> function are executed&period; Then&comma; the control of the program jumps back to the statement following <strong><span style&equals;"color&colon; &num;008000&semi;">account&period;deposit&lpar;&rpar;<&sol;span><&sol;strong>&period;<&sol;p>&NewLine;<p>Similarly&comma; the property of a class can be accessed as&colon;<&sol;p>&NewLine;<pre>account&period;balance<&sol;pre>&NewLine;<p>&nbsp&semi;<&sol;p>&NewLine;<h3><span style&equals;"color&colon; &num;000080&semi;"><strong>Example&colon; Kotlin Class and Objects<&sol;strong><&sol;span><&sol;h3>&NewLine;<pre>class Student &lbrace;&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;properties<&sol;span><&sol;strong>&NewLine; var rollno&colon; Int &equals; 0&NewLine; var name&colon; String &equals; ""&NewLine;&NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;"> &sol;&sol;member functions<&sol;span><&sol;strong>&NewLine; fun insertRecord&lpar;roll&lowbar;no&colon; Int&comma; student&lowbar;name&colon; String&rpar; &lbrace;&NewLine; rollno &equals; roll&lowbar;no&NewLine; name &equals; student&lowbar;name&NewLine; &rcub;&NewLine;&NewLine; fun displayDetail&lpar;&rpar; &lbrace;&NewLine; println&lpar;"&dollar;rollno &dollar;name"&rpar;&NewLine; &rcub;&NewLine;&rcub;&NewLine;&NewLine; fun main&lpar;args&colon; Array&lt&semi;String&gt&semi;&rpar; &lbrace;&NewLine; <strong><span style&equals;"color&colon; &num;008000&semi;">&sol;&sol;s1 and s2 are two objects of Student class<&sol;span><&sol;strong>&NewLine; var s1 &equals; Student&lpar;&rpar;&NewLine; var s2 &equals; Student&lpar;&rpar;&NewLine; s1&period;insertRecord&lpar;101&comma; "Manish"&rpar;&NewLine; s2&period;insertRecord&lpar;202&comma; "Arun"&rpar;&NewLine; s1&period;displayDetail&lpar;&rpar;&NewLine; s2&period;displayDetail&lpar;&rpar;&NewLine; &rcub;<&sol;pre>&NewLine;<h4><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Output<&sol;strong><&sol;span><&sol;h4>&NewLine;<pre>101 Manish&NewLine;202 Arun<&sol;pre>&NewLine;<h4><span style&equals;"color&colon; &num;0000ff&semi;"><strong>Example explained<&sol;strong><&sol;span><&sol;h4>&NewLine;<p>In the above example&comma;<&sol;p>&NewLine;<ul>&NewLine;<li><strong><span style&equals;"color&colon; &num;0000ff&semi;">Student<&sol;span><&sol;strong> class consists of two properties rollno&comma; name and two member functions insertRecord&lpar;&rpar; and displayDetail&lpar;&rpar;&period;<&sol;li>&NewLine;<li>Inside <span style&equals;"color&colon; &num;0000ff&semi;"><strong>main<&sol;strong><strong>&lpar;&rpar;<&sol;strong><&sol;span> function&comma; s1 and s2 are two objects of <span style&equals;"color&colon; &num;008000&semi;"><strong>Student<&sol;strong><&sol;span> class&period;<&sol;li>&NewLine;<li>Here&comma; we are initializing the value to these objects by invoking the <strong><span style&equals;"color&colon; &num;008000&semi;">insertRecord&lpar;&rpar;<&sol;span><&sol;strong> method&period;<&sol;li>&NewLine;<li>And&comma; we are displaying the state &lpar;property&rpar; of the objects by invoking the <strong><span style&equals;"color&colon; &num;008000&semi;">displayDetail&lpar;&rpar;<&sol;span><&sol;strong> method&period;<&sol;li>&NewLine;<&sol;ul>&NewLine;&NewLine;

Exit mobile version