다음 두 가지의 차이점은 무엇입니까?특성에 관한 질문
1 #
trait B extends A {
}
2 # A
는 추상 클래스입니다
trait B { self: A =>
}
.
> > 편집 :
플러그 비행 및 꽥꽥 행동으로 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 수 있습니다! : D
< < 침묵 >> 제B
예에서
http://stackoverflow.com/questions/2224932/difference-between-trait-inheritance-and-self-type-annotation, http://stackoverflow.com/questions/1990948의 사본 자체를 찾습니다./what-that-the-the-difference-scala-self-types-and-trait-subclasses – VonC