class Person { def walk: Unit = () } val person: Person = new Person val person: Person{def hi: String} = new Person { def hi = "hello" } trait Runner { def run: Unit = () } val person: Person with Runner = new Person with Runner def walkAndRun(p: Person with Runner) { p.walk p.run } def walkAndGreet(p: Person{def hi: String}): String = { p.walk p.hi } def greet(g: Any{def hi: String}): String = g.hi // syntactic sugar def greet(g: {def hi: String}): String = g.hi