Skip to content

Instantly share code, notes, and snippets.

@Saheb
Created February 13, 2016 17:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Saheb/8b44bc8ae38574510fbc to your computer and use it in GitHub Desktop.
Save Saheb/8b44bc8ae38574510fbc to your computer and use it in GitHub Desktop.
// Legacy
abstract class Lannister {
def payTheirDebts: Boolean
def trueLannister = payTheirDebts
}
//Father
trait Tywin extends Lannister{
override def payTheirDebts = true
}
// Son #1
trait Jamie extends Tywin {
override def payTheirDebts = true
}
// Son #2
trait Tyrion extends Tywin {
override def payTheirDebts = true
}
// Daughter #1
trait Cersei extends Tywin {
override def payTheirDebts = false
}
class Joffrey extends Lannister with Jamie with Cersei
class Tommen extends Lannister with Cersei with Jamie
object GameOfThrones extends App{
val joffrey = new Joffrey
println(joffrey.trueLannister) // false
val tommen = new Tommen
println(tommen.trueLannister) // true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment