Blog

용어 정리

용어 정리

함수 vs 메서드

코틀린의 기본적인 함수(function) 은 fun 키워드를 사용한다
톱레벨 함수
클래스의 멤버 함수
함수 내부의 지역 함수
예시 코드
메서드(method) 는 클래스와 연결된 함수이다
멤버 함수는 해당 클래스와 연결되어 있으므로, 메서드이다
메서드를 호출하려면 클래스 인스턴스가 있어야 하며, 이를 활용해서 참조해야 한다
모든 메서드는 함수이다
예시 코드
확장 함수를 메서드로 불러도 되는지에 대해서는 논란의 여지가 있지만, 확장 함수도 호출을 할 때 인스턴스가 필요하므로 이 책에서는 메서드로 본다.
예시 코드

멤버 vs 확장

멤버(member) 는 클래스 내부에 정의된 요소를 의미한다
예시 코드
확장 (extension) 은 이미 존재하는 클래스에 추가하는 가짜 멤버 같은것이다
확장은 클래스 외부에서 정의하지만, 일반적인 멤버처럼 사용할 수 있다
예시 코드

파라미터와 와규먼트

파라미터 (parameter) 는 함수 선언에 정의되어 있는 변수를 의미한다
아규먼트(argument) 는 함수로 전달되는 실질적인 값을 의미한다
제네릭으로 선언된 변할 수 있는 부분이 타입 파라미터 이다
그리고 실질적인 타입이 타입 아규먼트 이다
예시 코드

기본 생성자와 추가적인 생성자

생성자는 객체를 만들 때 호출되는 특별한 타입의 함수이다.
코틀린이 생성자를 함수처럼 다루고, 생성자 레퍼런스도 함수 타입이지만, 공식적으로는 서브루틴이다
생성자는 일반적으로 객체를 설정할 때 사용되는데, 이러한 생성자를 기본 생성자 (primary constructor) 라고 한다
예시 코드
추가로 다른 생성자를 만들어야 하는 경우가 있는데, 이를 추가적인 생성자 (secondary constructor) 라고 한다
추가적인 생성자는 일반적으로 this 키워드를 활용해서 기본 생성자를 호출한다\
예시 코드
일반적으로 코틀린에서는 추가적인 생성자를 사욯알 일이 거의 없다
기본 생성자 아규먼트의 다른 서브셋을 만들 때는 디폴트 아규먼트를 활용할 수 있다
다른 종류의 객체를 만들어야 할 때는 팩토리 메서드를 사용한다
자바에서 사용하기 위해서 기본 생성자 아규먼트의 여러 서브셋을 만들어야 한다면, @JvmOverloads 와 같은 어노테이션을 활용해서 함수에 대한 오버로드를 간단하게 만들 수 있다
예시 코드