निम्नलिखित दो के बीच क्या अंतर है?लक्षणों पर एक प्रश्न
1 #
trait B extends A {
}
2 #
trait B { self: A =>
}
जहां A
एक अमूर्त वर्ग है।
> > संपादित करें:
कृपया प्लगेबल उड़ान और quacking व्यवहार के साथ Duck
के निम्न उदाहरण के संबंध में बताते हैं:
abstract class Duck {
def fly(): Unit
def quack(): Unit
def swim() {
println("Woodoowoodoowoodoo...")
}
}
trait FlyingWithWings extends Duck {
override def fly() {
println("Me can fliez! :D")
}
}
trait FlyingNoWay { self: Duck =>
def fly() {
println("Me cannot fliez! :(")
}
}
trait Quack extends Duck {
override def quack() {
println("Quack! Quack!")
}
}
trait MuteQuack { self: Duck =>
def quack() {
println("<<Silence>>")
}
}
class MallardDuck extends Duck with FlyingWithWings with MuteQuack
object Main {
def main(args: Array[String]) {
val duck = new MallardDuck
duck.fly()
duck.quack()
}
}
आउटपुट:
मेरे fliez कर सकते हैं! : डी
< < साधना >>
http://stackoverflow.com/questions/2224932/difference-between-trait-inheritance-and-self-type-annotation का डुप्लिकेट देखें, स्वयं http://stackoverflow.com/questions/1990948 का डुप्लिकेट/स्केल-सेल्फ-टाइप-एंड-ट्राइट-सबक्लास – VonC