package Ġde . iterate c . kotlin _ training _ playground Ċ Ċ // Ġconstructor Ġprops Ġ& Ġdefault Ġvalues Ċ // Ġdata Ġclasses Ġ- Ġdefault Ġmethods , Ġcopy , Ġdestruct ing Ġdeclarations Ċ Ċ // ĠThis Ġis ĠSimple Class Java Ġconverted Ġto ĠKotlin . Ċ // Ċ // ĠProperties Ġof Ġthe Ġclass Ġcan Ġbe Ġdeclared Ġas Ġval Ġor Ġvar . Ċ // ĠKotlin Ġautomatically Ġcreates Ġa Ġgetter , Ġsetter Ġand Ġprivate Ġbacking Ġfield Ġfor Ġvar . Ċ // ĠKotlin Ġautomatically Ġcreates Ġa Ġgetter Ġand Ġprivate Ġbacking Ġfield Ġfor Ġval . Ċ // Ċ // ĠKotlin Ġforces Ġyou Ġto Ġdefine Ġthe Ġsignature Ġof Ġthe Ġarguments Ġof Ġyour Ġso - called Ġprimary Ġconstructor Ġnext Ġto Ġthe Ġclass Ġname Ċ // ĠContent Ġof Ġinit Ġblocks Ġand Ġvariable Ġassignments Ġin Ġproperty Ġdefinitions Ġinside Ġthe Ġclass Ġbody Ġform Ġthe Ġbody Ġof Ġthis Ġconstructor . Ċ private Ġclass ĠSimple Class Ġconstructor ( readOnly Property : ĠString , Ġmutable Property : ĠInt ) Ġ{ ĊĠĠĠ Ġvar ĠreadOnly Property : ĠString Ġ= ĠreadOnly Property ĊĠĠĠ Ġvar Ġmutable Property : ĠInt Ġ= Ġmutable Property ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" In Ġconstructor ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinstance Method () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠSimple Class Best Pract ice Ġ( val ĠreadOnly Property : ĠString , Ġvar Ġmutable Property : ĠInt ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" In Ġconstructor ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinstance Method () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġ// ĠThere Ġis Ġno Ġ" new " Ġkeyword Ġin ĠKotlin ĊĠĠĠ Ġval Ġsimple Class Ġ= ĠSimple Class (" readOnly ", Ġ 0 ) ĊĠĠĠ Ġval Ġsimple Class Best Pract ice Ġ= ĠSimple Class Best Pract ice (" readOnly ", Ġ 0 ) ĊĊĠĠĠ Ġ// ĠBe hind Ġthe Ġscenes Ġa Ġgetter Ġis Ġcalled . ĠThe Ġfields Ġthemselves Ġare Ġprivate , Ġhowever Ġfor Ġthe Ġclient Ġit Ġseems Ġlike Ġwe Ġaccess Ġthem Ġdirectly . ĊĠĠĠ Ġprintln ( simple Class . readOnly Property ) ĊĠĠĠ Ġprintln ( simple Class Best Pract ice . readOnly Property ) ĊĊĠĠĠ Ġ// Be hind Ġthe Ġscenes Ġa Ġsetter Ġis Ġcalled . ĊĠĠĠ Ġsimple Class . mutable Property Ġ= Ġ 1 0 ĊĠĠĠ Ġsimple Class Best Pract ice . mutable Property Ġ= Ġ 1 0 ĊĠĠĠ Ġ// ĠCompile Ġerror Ġbecause Ġfor Ġ" val " Ġno Ġset ters Ġare Ġgenerated : ĊĠĠĠ Ġ// Ġsimple Class . readOnly Property Ġ= Ġ" re assigned " ĊĊĠĠĠ Ġsimple Class . instance Method () ĊĠĠĠ Ġsimple Class Best Pract ice . instance Method () ĊĊĠĠĠ Ġyour First Class () Ċ } Ċ Ċ // Ġ---- ĠTry Ġit Ġyourself ! Ċ Ċ /** Ċ Ġ* ĠTask Ġyour First Class Ċ Ġ* ĠCreate Ġa Ġclass Ġ' H orse ' Ġwith Ġread - only Ġproperty Ġ' name ' Ġ( String ) Ġand Ġmutable Ġproperty Ġ' weight ' Ġ( Int ) Ġdefined Ġin Ġthe Ġconstructor . Ċ Ġ* ĠThen Ġcreate Ġan Ġinstance Ġof Ġa ĠH orse Ġand Ġprint Ġboth Ġproperties . Ċ Ġ* ĠAdd Ġa Ġdefault Ġvalue Ġ 5 0 0 Ġfor Ġthe Ġproperty Ġ' weight ' Ġin Ġthe Ġconstructor . Ċ Ġ* ĠOptional : ĠAdd Ġa Ġmethod Ġgain Weight Ġto Ġthe Ġclass Ġthat Ġdouble s Ġthe Ġweight Ġof Ġa Ġh orse . Ċ Ġ*/ Ċ private Ġfun Ġyour First Class () Ġ{ ĊĠĠĠ Ġprintln (" #### ĠTask ĠYour First Class ") Ċ }