by이란 무엇일까?

코틀린 레퍼런스 항목에 by는 인터페이스 구현을 다른 객체에 위임할때, 프로퍼티의 Accesseor 구현을 다른 객체에 위임 이라고 설명 되어 있습니다.
그럼 위임이란 무엇일까?
- 위탁자(delegator) → 수탁자(delegate) 형태이며 어떤 일의 책임 및 처리를 다른 클래스 또는 메서드에게 넘긴다는 의미.
- 한 객체가 기능 일부를 다른 객체로 넘겨주어, 첫 번째 객체 대신 수행하도록 하는 일.
- 다른 클래스의 기능을 사용하되 그 기능을 변경하지 않으려면 상속 대신 위임.
- 위임을 활용하면 한 객체의 변경이 다른 객체에 미치는 영향이 작아짐.
❖ 출처 제타위키
왜 사용할까?
객체지향 언어로 프로그램을 개발하다 보면 하위 클래스가 상위 클래스를 상속해서 상위 클래스의 메서드를 오버라이드를 하는 경우가 많습니다.이런 오버 라이딩 상황에서 프로그램 유지보수를 하다 보면 상위 클래스가 내용이 변경이 되는 경우 하위 클래스가 상위 클래스에 의존 및 참조하고 있던 상황이 변경되면서 하위 클래스에 뜻하지 않은 에러가 발생합니다.
대표적인 상속의 문제점은 아래와 같습니다.
- 상위 클래스와 하위 클래스의 서로 간의 결합도가 높아져 상위 클래스의 변화가 하위 클래스에 주는 영향을 예측하기 어렵다.
- 불필요한 상위 클래스의 메서드까지 구현해야 한다.
- final클래스의 경우 상속이 불가능하다.
- 상속 구조가 복잡해질수록 그 영향에 대한 예측이 힘들어진다.
- 하위 클래스로 내려갈수록 기능이 더해져 파악하기 어렵다.