(Scala) tratit

* 자바언어의 Interface에 해당하는 녀석이다.

이를 이용해 코드의 재사용을 극대화 할 수 있다. 클래스의 상속관계와는 다르게 여러 trait를 섞어 사용할 수 있다.


여기서 섞어서 사용한다는 것이 중요하다.


Java언어의 interface 는 이 interface를 상속받는 클래스들의 뼈대를 제공해 주지만 정작 메소드 구현은 interface를 상속받는 클라이언트 클래스를 구현하는 개발자가 전부 구현해야 한다. 하지만 Scala언어에서의 trait은 이와 다르게 구체적인 함수가 구현되어 있어서 이를 사용하는 개발자는 특별히 mix(섞어서) 함수를 구현하지 않고 바로 사용할 수 있다는 장점이 있다.


trait philosophical {
 def philosophize() {
   println("블라블라")
  }
}


다른 클래스에서 이 trait을 mix 해서 사용하는 방법은 아래와 같다.

class Frog extends philosophical {
 override def toString = "Green";
}

여러개의 trait를 사용하는 방법은 다음과 같다.

class Frog extends Animal with philosophical with HashLeg {
   override def toString = "Green";
}


with를 사용하면 된다.







댓글

이 블로그의 인기 게시물

(18장) WebSocekt과 STOMP를 사용하여 메시징하기

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬