코틀린 (Kotlin) by 키워드 정리
코틀린 by 키워드 개발하다 보면 하위 클래스가 상위 클래스를 상속해서 상위 클래스 메소드를 오버라이드를 하는 경우가 많습니다. 이러한 상황에서 유지보수를 하다보면 상위 클래스가 변경이되는 경우 하위 클래스가 상위 클래스에 의존하고 있던 상황이 변경되면서 예기치 않은 오류가 발생합니다. 그래서 코틀린에서는 기본적으로 클래스는 final 입니다. 상속가능한 클래스는 open 을 해서 상속이 가능하다는 것을 알려줍니다. 상위 클래스 변경 시 하위 클래스에 영향을 줄 수 있다는 것을 인지시켜 줄수 있습니다. by - 위임 상속을 허용하지 않는 클래스에 새로운 기능을 추가 할때는 위임을 사용할 수 있습니다. 위임을 사용하면 상속하지 않고 기존 기능을 그대로 사용하면서 새로운 기능을 추가 할 수 있습니다. 코틀린에서는 by 키워드 를 사용하여 위임 기능을 사용할 수 있습니다. //상속하지않고 새로운 함수 추가하기 class CountingSet<T> ( val innerSet : MutableCollection <T> = HashSet () ) : MutableCollection <T> by innerSet { //MutableCollection 구현을 innerSet 에 위임 var objectsAdded = 0 //카운트 //override 함수는 HashSet() 대신 구현한 것을 사용 override fun add(element: T): Boolean { objectsAdded ++ //add할때마다 카운트 증가 return innerSet.add(element) } //override 함수는 HashSet() 대신 구현한 것을 사용 override fun addAll(c: Collection<T> ): Boolean { objectsAdde