객체 지향에서 위임이란 클래스의 특정 기능들을 대신 처리해 주는 것을 말합니다. 코틀린은 기본적으로 상속이 허용되지 않는데, 개발을 하다 보면 상속이 불가능한 클래스도 새로운 동작을 확장하거나 수정해 활용해야 하는 경우가 있습니다. 클래스를 상속하지 않고 기존 클래스의 일부 메서드를 변경하거나 새로운 기능을 확장하는 방법이 위임 입니다. 위임을 사용하는 대표적인 패턴에는 데코레이터(Decorator) 패턴이 있습니다. 데코레이터 패턴은 그 이름처럼 특정 클래스의 기능에 추가 기능을 덧붙이는 방법입니다. 데코레이터 패턴은 특정 클래스에 기능을 덧붙이고자 위임을 사용하는데, 자바로 이해해 봅시다. public final class Sword{ String name; public Sword(String nam..
코틀린은 기본적으로 상속이 불가능합니다. 상속을 하기 위해서는 open이라는 키워드를 사용해야 합니다. 이렇게 하는 이유는 객체 지향에서 상속을 잘 못 사용할 경우 많은 문제가 발생하기 때문입니다. 이를 이해하기 위해 상속에 대해 더 구체적으로 알아봅시다. 상속은 반복되는 중복 코드를 줄여 주는 객체 지향 프로그래밍 핵심 기법 중 하나입니다. 상속은 2가지 측면에서 접근 가능합니다. 하나는 코드 구현에 대한 상속이며, 또 다른 하나는 인터페이스 집합에 대한 상속입니다. 인터페이스 상속은 코드를 포함하고 있지 않기 때문에 다중 상속이 가능합니다. 하지만 구현 상속은 다중 상속 시 문제가 생깁니다. 구현 상속은 실제 코드가 포함되어 있기 때문에 만약 상속받는 2개의 클래스에 똑같은 이름의 메서드가 있다면 어..
코틀린은 Getter와 Setter가 자동 생성됩니다. 예제를 보면서 이해해 봅시다. class Person { var age: Int = 0 val name: String // 생성자에서 이름을 받는다. constructor(name: String){ this.name = name } } 코틀린에서는 var로 선언하는 변수는 Getter, Setter 전부 생성되고, val로 선언하는 변수는 Getter만 선언됩니다. 테스트 코드를 작성하면서 확인해 봅시다. class KotlinTest { @Test fun testGetterSetter() { // 코틀린의 Person 객체를 생성하고 이름을 "jwlee" 나이를 19으로 설정 Person person = new Person("jwlee"); per..
시작점(Entry Point)와 Manifest파일Entry Point 대부분의 운영체제나 언어에서 프로그램의 Entry Point는 오직 하나만 존재하고 보통은 main이라는 함수이다. 반면에 안드로이드는 예외적으로 단일 진입점을 가지고 있지 않다. 안드로이드는 단일 Entry Point 대신 사용가능한 4가지 컴포넌트를 가지고 있다. 4대 컴포넌트는 Activity, Service, BroadCastReceiver, Content Provider이고, Entry Porint를 통해 시스템에서 컴포넌트로 제어권을 넘기기 위해서는 AndroidManifest.xml 파일에 적어둬야 한다. ActivityActivity는 화면에 포커싱되어 사용자와 상호 작용을 하는 컴포넌트이다. MainActivity가 ..