package Ġcom . kotlin . note .` class ` Ċ Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* Ġ[ Class ]( https :// kotlin lang . org / docs / reference / classes . html ) Ċ Ġ*/ Ċ class ĠClass Learn Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Constructor () Ġ{ ĊĠĠĠĠĠĠĠ ĠPrimary Constructor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Init Order () Ġ{ ĊĠĠĠĠĠĠĠ ĠInit Order () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Secondary Constructor () Ġ{ ĊĠĠĠĠĠĠĠ ĠSecondary Constructor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Derived Init Order () Ġ{ ĊĠĠĠĠĠĠĠ ĠDerived Init Order (" hello ", Ġ" world ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// Ġ ä¸» æŀĦéĢł åĩ½æķ° å¦Ĥæŀľ æ²¡æľī ä»»ä½ķ æ³¨è§£ æĪĸ åı¯ è§ģ æĢ§ ä¿® é¥ ° ç¬¦ ï¼Į constructor Ġ åħ³éĶ®åŃĹ åı¯ä»¥ çľģ çķ¥ ãĢĤ ĊĠĠĠ Ġ// Ġ ä¸» æŀĦéĢł åĩ½æķ° ä¸įèĥ½ åĮħåĲ« ä»»ä½ķ ä»£çłģ ãĢĤ åĪĿå§ĭåĮĸ ä»£çłģ æĶ¾åľ¨ Ġinit Ġ åĿĹ åĨħ ãĢĤ ĊĠĠĠ Ġprivate Ġclass ĠPrimary Constructor Ġprivate Ġconstructor () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstructor ( string : ĠString Ġ= Ġ"") Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" constructor Ġstring =$ string ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// ĠåĪĿå§ĭåĮĸ é¡ºåºı ä¸º ä»£çłģ çļĦ é¡ºåºı ĊĠĠĠ Ġprivate Ġclass ĠInit Order Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Property Ġ= Ġ" First Ġproperty ". also (:: println ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" First Ġinitializer Ġblock ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsecond Property Ġ= Ġ" Second Ġproperty ". also (:: println ) ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Second Ġinitializer Ġblock ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// Ġæ ¬ ¡ æŀĦéĢł ĊĠĠĠ Ġprivate Ġclass ĠSecondary Constructor Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Constructor ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstructor ( i : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Constructor ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġåľ¨ æ¬¡ æŀĦéĢł ä¹ĭåīį æī§è¡Į ï¼Į ä¸İ ä»£çłģ ä½įç½® æĹł åħ³ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Init Ġblock ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// Ġfinal Ġ ç±» ä¸ŃçļĦ Ġopen Ġ ä¿® é¥ ° ç¬¦ æĹł æķĪ ï¼Į åĽłä¸º ç±» æĹłæ³ķ è¢« ç»§æī¿ ĊĠĠĠ Ġprivate Ġclass ĠOpen Function In Final Class Ġ{ ĊĊĠĠĠĠĠĠĠ Ġopen Ġval Ġi : ĠInt Ġ= Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġtest () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// Ġ è¦ĨçĽĸ å±ŀæĢ§ ĊĠĠĠ Ġ// Ġ åŃĲ ç±» ä¸Ń å±ŀæĢ§ ç±»åŀĭ å¿ħé¡» æĺ¯ çĪ¶ ç±» å±ŀæĢ§ ç±»åŀĭçļĦ åŃĲ ç±» ï¼Į åıį ä¹ĭ æĹł æķĪ ĊĠĠĠ Ġ// Ġ çĪ¶ ç±» çĶ¨ Ġval Ġ ä¿® é¥ ° ï¼Į åŃĲ ç±» åı¯ä»¥ æĶ¹ ä¸º Ġvar ï¼Į åıį ä¹ĭ æĹł æķĪ ĊĠĠĠ Ġprivate Ġopen Ġclass ĠOverride Property Ġ{ ĊĊĠĠĠĠĠĠĠ Ġopen Ġval Ġnumber : ĠNumber Ġ= Ġ 0 F ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠDecl ared Override Property Ġ: ĠOverride Property () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġnumber : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// Ġæ ´ ¾ çĶŁ ç±» æī§è¡Į é¡ºåºı ĊĠĠĠ Ġprivate Ġopen Ġclass ĠBase ( name : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Initializing ĠBase ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġopen Ġval Ġsize : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . length . also Ġ{ Ġprintln (" Initializing Ġsize Ġin ĠBase : Ġ$ it ") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠDerived Init Order ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ ĠlastName : ĠString , ĊĠĠĠ Ġ) Ġ: ĠBase ( name . capitalize (). also Ġ{ Ġprintln (" Argument Ġfor ĠBase : Ġ$ it ") Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Initializing ĠDerived ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġsize : ĠInt Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( super . size Ġ+ ĠlastName . length ). also Ġ{ Ġprintln (" Initializing Ġsize Ġin ĠDerived : Ġ$ it ") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/// ĊĠĠĠ Ġ// Ġ éĩį åĨĻ è§ĦåĪĻ ĊĠĠĠ Ġprivate Ġopen Ġclass ĠRectangle Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Ġfun Ġdraw () Ġ{ Ġ/* Ġ... Ġ*/ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinterface ĠPolygon Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġdraw () Ġ{ Ġ/* Ġ... Ġ*/ ĊĠĠĠĠĠĠĠ Ġ} Ġ// Ġinterface Ġmembers Ġare Ġ' open ' Ġby Ġdefault ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠSquare () Ġ: ĠRectangle (), ĠPolygon Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġcompiler Ġrequires Ġdraw () Ġto Ġbe Ġoverridden : ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdraw () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper < Rectangle >. draw () Ġ// Ġcall Ġto ĠRectangle . draw () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper < Polygon >. draw () Ġ// Ġcall Ġto ĠPolygon . draw () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ