package Ġcom . rom mel ric o . s 3 oo programming Ċ Ċ val ĠMY _ CONSTANT Ġ= Ġ 1 0 0 Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠĠĠ Ġval Ġcar Ġ= ĠCar (" Blue ", Ġ" To y ota ", Ġ 2 0 1 5 ) ĊĠĠĠ Ġval Ġcar 2 Ġ= ĠCar (" Blue ", Ġ" To y ota ", Ġ 2 0 1 5 ) ĊĠĠĠ Ġprintln ( car ) ĊĠĠĠ Ġprintln ( car Ġ== Ġcar 2 ) ĊĊĠĠĠ Ġval Ġcar 3 Ġ= Ġcar . copy () ĊĠĠĠ Ġprintln ( car 3 ) ĊĠĠĠ Ġval Ġcar 4 Ġ= Ġcar . copy ( year Ġ= Ġ 2 0 1 6 , Ġcolor Ġ= Ġ" Green ") ĊĠĠĠ Ġprintln ( car 4 ) ĊĊĠĠĠ Ġprintln ( MY _ CONSTANT ) ĊĊĠĠĠ Ġ// ĠTop Ġlevel Ġitems Ġare Ġpublic Ġby Ġdefault Ġin ĠKotlin Ġ( vs Ġpackage - private ) ĊĠĠĠ Ġ// ĠIn ĠKotlin , Ġprivate Ġtop - level Ġitems Ġmean Ġeverything Ġin Ġsame Ġfile Ġcan Ġaccess ĊĠĠĠ Ġ// ĠIn ĠKotlin , Ġno Ġmatching Ġrequirement Ġbetween ĠClass Ġnames Ġand Ġfilenames . ĊĊĠĠĠ Ġval Ġm Ġ= ĠEmployee (" John ") ĊĠĠĠ Ġprintln ( m . firstName ) ĊĠĠĠ Ġprintln ( m . full Time ) Ġ// Ġunder Ġthe Ġcovers Ġthis Ġis Ġcalling Ġa Ġgetter / setter . ĊĠĠĠ Ġm . full Time Ġ= Ġfalse ĊĠĠĠ Ġprintln ( m . full Time ) ĊĊĠĠĠ Ġvar Ġn Ġ= ĠEmployee (" J ane ", Ġfalse ) ĊĠĠĠ Ġprintln ( n . firstName ) ĊĠĠĠ Ġprintln ( n . full Time ) ĊĊĠĠĠ Ġ// ĠModule Ġis Ġa Ġgroup Ġof Ġfiles Ġthat Ġare Ġcompiled Ġtogether ; ĠMaven Ġor ĠGradle . ĊĠĠĠ Ġ// ĠInternal Ġis Ġvisible Ġinside Ġthe Ġmodule . ĊĊĠĠĠ Ġ// ĠTop - level Ġaccess Ġmodifiers : Ġprivate , Ġprotected , Ġpublic , Ġand Ġinternal . ĊĠĠĠ Ġ// ĠPublic Ġ= ĠVis ible Ġeverywhere ĊĠĠĠ Ġ// ĠPrivate Ġ= ĠVis ible Ġwithin Ġthe Ġsame Ġfile . ĊĠĠĠ Ġ// ĠProtected Ġ= ĠCan 't Ġbe Ġused . ĊĠĠĠ Ġ// ĠInternal Ġ= ĠVis ible Ġwithin Ġthe Ġsame Ġmodules . ĊĊĠĠĠ Ġ// ĠIn ĠKotlin , Ġclasses Ġcan 't Ġsee Ġprivate Ġmembers Ġbelong ing Ġto Ġinner Ġclasses Ċ } Ċ Ċ /* Ċ // ĠKotlin Ġhas Ġthe Ġconcept Ġof Ġprimary Ġconstructor , Ġand Ġit Ġis Ġdeclared Ġbefore Ġthe Ġcur ly Ġbr aces . Ċ class ĠEmployee Ġconstructor ( firstName : ĠString ) Ġ{ ĊĊĠĠĠ Ġval ĠfirstName : ĠString ĊĊĠĠĠ Ġ// ĠInit Ġblocks Ġare Ġnot Ġa Ġconstructor . ĠIt 's Ġjust Ġsomething Ġthat Ġruns Ġalong side Ġthe Ġprimary Ġconstructor . ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . firstName Ġ= ĠfirstName ĊĠĠĠ Ġ} Ċ Ċ } Ċ */ Ċ Ċ /* Ċ // ĠShort er Ġway Ċ class ĠEmployee Ġconstructor ( firstName : ĠString ) Ġ{ ĊĊĠĠĠ Ġval ĠfirstName : ĠString Ġ= ĠfirstName Ċ Ċ } Ċ */ Ċ Ċ // ĠThird Ġshortest Ġway Ċ // Ġclass ĠEmployee ( val ĠfirstName : ĠString , Ġval Ġfull Time : ĠBoolean Ġ= Ġtrue ) Ċ // ĠKotlin Ġis Ġcreating Ġdefault Ġset ters / get ters Ġfor Ġus . Ċ // ĠIn ĠKotlin , Ġif Ġyou Ġdeclare Ġa Ġvariable Ġas Ġprivate , Ġthere Ġis Ġno Ġway Ġto Ġaccess Ġit Ġfrom Ġthe Ġoutside . ĠThis Ġis Ġdifferent Ċ // Ġthan Ġhow ĠJava Ġdoes Ġit . Ċ // ĠIn ĠKotlin , Ġgetters / set ters Ġhave Ġto Ġhave Ġsame Ġor Ġless Ġper miss ive Ġaccessor Ġthan Ġthe Ġproperty Ġit 's Ġmodifying . Ċ // ĠThere 's Ġno Ġpoint Ġin Ġsetting Ġa Ġproperty Ġprivate Ġto Ġprevent Ġit Ġfrom Ġbeing Ġdirectly Ġmodified , Ġso Ġit 's Ġnot Ġnecessary . Ċ Ċ // ĠThis Ġis Ġhow Ġyou Ġcreate Ġa Ġmore Ġadvanced Ġgetter / setter . Ċ class ĠEmployee ( val ĠfirstName : ĠString , Ġfull Time : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġvar Ġfull Time Ġ= Ġfull Time ĊĊĠĠĠ Ġ// ĠUsing Ġa Ġbacking Ġfield Ġto Ġrefer Ġto Ġa Ġcustom Ġgetter / setter . ĠBack ing Ġfield Ġgets Ġgenerated Ġonly Ġif Ġneeded . ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Running Ġcustom Ġget .") ĊĠĠĠĠĠĠĠ Ġreturn Ġfield Ġ// ĠThis Ġis Ġa Ġbacking Ġfield . ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Running Ġcustom Ġset ") ĊĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // ĠData ĠClasses Ġcome Ġwith Ġ" free " ĠtoString , Ġequals Ġand ĠHash codes , Ġand Ġcopy Ġfunctions . Ċ // ĠPrimary Ġconstructors Ġrequires Ġat Ġleast Ġone Ġparameter Ġand Ġmust Ġbe Ġval Ġor Ġvar . Ċ // ĠData ĠClasses Ġcan 't Ġbe Ġabstract , Ġsealed , Ġor Ġinner Ġclasses . Ċ data Ġclass ĠCar ( val Ġcolor : ĠString , Ġval Ġmodel : ĠString , Ġval Ġyear : ĠInt ) Ġ{ ĊĊĊ Ċ }