package Ġstudy . kotlin . oo Ċ Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . OutputStream Ċ Ċ // ================================================ ======= Ċ open Ġclass ĠBase Ġ{ ĊĠĠĠ Ġopen Ġval Ġproperty : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Base :: value " Ċ } Ċ Ċ class ĠDerived A : ĠBase () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġproperty : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ" Deriv ated :: value " Ċ } Ċ Ċ class ĠDer iv ated B ( override Ġvar Ġproperty : ĠString ) Ġ: ĠBase () Ċ Ċ // ================================================ ======= Ċ open Ġclass ĠImage Ġ{ ĊĠĠĠ Ġopen Ġfun Ġsave ( output : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Some Ġlogic Ġto Ġsave Ġan Ġimage ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ interface ĠVendor Image Ġ{ ĊĠĠĠ Ġfun Ġsave ( output : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Vendor Ġsaving Ġan Ġimage ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPNG Image Ġ: ĠImage (), ĠVendor Image Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsave ( output : ĠOutputStream ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper < Vendor Image >. save ( output ) ĊĠĠĠĠĠĠĠ Ġsuper < Image >. save ( output ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġpng Image Ġ= ĠPNG Image () ĊĠĠĠ Ġval Ġos Ġ= ĠByteArrayOutputStream () ĊĠĠĠ Ġpng Image . save ( os ) Ċ } Ċ