abstractclassPlant{defphotosynthesis=println("Oh, the sunlight!")}classRoseextendsPlant{defsmell=println("Good!")defmakePeopleHappy=println("People like me")}classRuderalextendsPlant{defgrow=println("I take up all the space!")}abstractclassAnimal{defmove=println("I can move!")}classDogextendsAnimal{defbark=println("Woof!")defmakePeopleHappy=println("People like me")}classSnakeextendsAnimal{defbite=println("I am poisonous!")}
traitPeoplePleaser{defmakePeopleHappy=println("People like me")}classRoseextendsPlantwithPeoplePleaser{defsmell=println("Good!")}classDogextendsAnimalwithPeoplePleaser{defbark=println("Woof!")}
publicabstractinterfacePeoplePleaser{publicabstractvoidmakePeopleHappy();}publicabstractclassPeoplePleaser$class{publicstaticvoidmakePeopleHappy(PeoplePleaser$this){Predef..MODULE$.println("People like me");}publicstaticvoid$init$(PeoplePleaser$this){}}publicclassRoseextendsPlantimplementsPeoplePleaser{publicvoidmakePeopleHappy(){PeoplePleaser$class.makePeopleHappy(this);}publicvoidsmell(){Predef..MODULE$.println("Good!");}publicRose(){PeoplePleaser.class.$init$(this);}}publicclassDogextendsAnimalimplementsPeoplePleaser{publicvoidmakePeopleHappy(){PeoplePleaser$class.makePeopleHappy(this);}publicvoidbark(){Predef..MODULE$.println("Woof!");}publicDog(){PeoplePleaser.class.$init$(this);}}
traitPeoplePleaser{valmoreMessage=""defmakePeopleHappy=println("People like me. "+moreMessage)}classRoseextendsPlantwithPeoplePleaser{overridevalmoreMessage="Because I smell nice."defsmell=println("Good!")}classDogextendsAnimalwithPeoplePleaser{overridevalmoreMessage="Because I fetch balls."defbark=println("Woof!")}
publicabstractinterfacePeoplePleaser{publicabstractvoidobjsets$PeoplePleaser$_setter_$moreMessage_$eq(StringparamString);publicabstractStringmoreMessage();publicabstractvoidmakePeopleHappy();}publicabstractclassPeoplePleaser$class{publicstaticvoidmakePeopleHappy(PeoplePleaser$this){Predef..MODULE$.println(newStringBuilder().append("People like me. ").append($this.moreMessage()).toString());}publicstaticvoid$init$(PeoplePleaser$this){$this.objsets$PeoplePleaser$_setter_$moreMessage_$eq("");}}publicclassRoseextendsPlantimplementsPeoplePleaser{privatefinalStringmoreMessage;publicvoidobjsets$PeoplePleaser$_setter_$moreMessage_$eq(Stringx$1){}publicvoidmakePeopleHappy(){PeoplePleaser$class.makePeopleHappy(this);}publicStringmoreMessage(){returnthis.moreMessage;}publicvoidsmell(){Predef..MODULE$.println("Good!");}publicRose(){PeoplePleaser.class.$init$(this);this.moreMessage="Because I smell nice.";}}publicclassDogextendsAnimalimplementsPeoplePleaser{privatefinalStringmoreMessage;publicvoidobjsets$PeoplePleaser$_setter_$moreMessage_$eq(Stringx$1){}publicvoidmakePeopleHappy(){PeoplePleaser$class.makePeopleHappy(this);}publicStringmoreMessage(){returnthis.moreMessage;}publicvoidbark(){Predef..MODULE$.println("Woof!");}publicDog(){PeoplePleaser.class.$init$(this);this.moreMessage="Because I fetch balls.";}}