package Ġcom . do od . kotlin . basic stuff . classes And Such Ċ Ċ // by Ġdefault Ġclasses Ġcannot Ġbe Ġextended Ġunless Ġit Ġis Ġopen . Ġ Ġsame Ġfor Ġproperties Ċ // open Ġand Ġabstract Ġare Ġredundant Ċ open Ġclass ĠBe verage ( var Ġcolor : ĠString ) Ġ{ ĊĠĠĠ Ġopen Ġvar ĠmaxSize Ġ= Ġ 1 2 ĊĠĠĠ Ġvar Ġcurrent Size Ġ= Ġ 0 ĊĠĠĠ Ġopen Ġval Ġname Ġ= Ġ" Generic ĠBe verage " ĊĠĠĠ Ġval Ġempty Ġ= Ġfalse Ġ Ġ// not Ġover rid able Ġin Ġsubclasses ĊĊĠĠĠ Ġopen Ġfun Ġdrink () Ġ: ĠString Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġprintln (" gl ug Ġgl ug ") Ġ Ġ// origin ale ĊĠĠĠĠĠĠĠ Ġreturn Ġ" gl ug Ġgl ug " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġref ill () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Size Ġ= ĠmaxSize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// intellij Ġgenerated Ġthis Ġalt - insert ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Be verage ( color ='$ color ', ĠmaxSize =$ maxSize , Ġcurrent Size =$ current Size , Ġname ='$ name ', Ġempty =$ empty )" ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // ext ending Ġa Ġclass . Ġ Ġif Ġthe Ġparent Ġclass Ġhas Ġa Ġprimary Ġconstructor , Ġthe Ġsubclass Ġhave Ġthe Ġsame Ġas Ġan Ġin ut , Ġand Ġcall Ġthat Ċ // for Ġthe Ġsuper , Ġie Ġcolor Param Ċ // note Ġyou Ġcan Ġoverride Ġa Ġval Ġin Ġthe Ġparent Ġand Ġmake Ġit Ġa Ġvar Ġin Ġthe Ġsub cli ass . Ġ Ġnot Ġthe Ġother Ġway Ġ( com ile Ġtime Ġerror ) Ċ // over rid en Ġfun Ġor Ġprops Ġmust Ġremain Ġopen , Ġunless Ġit ' Ġdeclared Ġfinal Ċ class ĠBe er ( var Ġcolor Param : ĠString ): ĠBe verage ( color Param ) Ġ{ ĊĠĠĠ Ġoverride Ġvar ĠmaxSize Ġ= Ġ 2 4 Ġ Ġ// override Ġthe Ġparent ĠmaxSize Ġproperty Ġand Ġchange Ġit 's Ġvalue ĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" Be er " ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfield . toUpperCase () Ġ// override Ġdefault Ġgetter Ġwith Ġcustom Ġgetter , Ġusing Ġthe Ġbacking Ġfield Ġof Ġname ĊĊĠĠĠ Ġinit Ġ{ Ġ// alternate Ġway Ġof Ġsetting Ġparent Ġvalues Ġinstead Ġof Ġoverride ĊĠĠĠĠĠĠĠ Ġcurrent Size Ġ= Ġ 1 8 ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġrules Ġfor Ġoverriding Ġfunctions ĊĠĠĠ Ġ// fun Ġparams Ġin Ġthe Ġover r ider Ġmust Ġmatch Ġt ue Ġsuper Ġclass Ġfun ĊĠĠĠ Ġ// return Ġtype Ġmust Ġbe Ġsame Ġas Ġparent , Ġor Ġa Ġsubtype ĊĠĠĠ Ġoverride Ġfun Ġdrink (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . dr ink () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// not Ġoverriding Ġresults Ġin Ġte h Ġbe vere age ĠtoString Ġgetting Ġcalled . ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Be er ( color Param ='$ color Param ', ĠmaxSize =$ maxSize )" Ġ+ Ġsuper . toString () Ġ// I Ġadded Ġthe Ġsuper . tostring Ġotherwise ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ class ĠW if es W ine ( var Ġcolor Param : ĠString ) Ġ: ĠBe verage ( color Param ) Ġ{ Ċ Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġgeneric Be verage Ġ= ĠBe verage (" red ") ĊĠĠĠ Ġprintln (" new Ġ$ generic Be verage ") ĊĠĠĠ Ġprintln (" dr n ink : Ġ${ generic Be verage . dr ink () }") ĊĊĠĠĠ Ġval Ġbeer Ġ= ĠBe er (" amber ") ĊĠĠĠ Ġprintln (" beer : Ġ$ beer ") ĊĠĠĠ Ġprintln (" name : Ġ${ beer . name }") ĊĊĠĠĠ Ġbeer . current Size Ġ= Ġ 2 ĊĠĠĠ Ġprintln (" current B ee er Size : Ġ${ beer . current Size }") ĊĊĠĠĠ Ġbeer . ref ill () ĊĠĠĠ Ġprintln (" ref iled : Ġ${ beer . current Size }") ĊĠĠĠ Ġprintln (" gon na Ġdrink ! Ġ Ġ$ beer . dr ink () ") Ċ }