Kotlin 문법 정리 3

kkomin·2023년 7월 18일

Kotlin

목록 보기
2/7

1. 메소드

소스코드에 이름을 붙인 로직을 메소드라고 부르면 된다. 메소드는 우리가 기존 코틀린에서 사용하던 가장 기본적인 틀이다. 아래 사진의 코드가 메소드의 기본 구조이다.


2. 클래스

class 키워드를 활용해서 클래스를 생성하는데 클래스에는 정보와 행위(메소드)를 작성하는데, 하나의 파일은 한 개의 클래스를 의미하지만, 하나의 파일에 여러 개의 클래스가 존재할 수 있다.


3. 생성자

클래스를 실체화할 때 최초로 실행할 로직을 작성할 때 생성자를 활용한다. 이때, 생성자는 기본 생성자와 명시적 생성자가 존재하는데, 기본 생성자는 이전까지 클래스를 만들던 메소드와 차이가 없는데 명시적 생성자는 주 생성자와 부 생성자로 구분할 수 있다.

  • 주 생성자
    Init 안에 바로 코드를 작성하는 것, 클래스 옆에 존재, 반드시 하나의 형태만 받도록 만들 수 있다.
  • 부 생성자
    파라미터를 다 받은 후에 실행, 클래스 안에 존재, 부 생성자를 여러 개 만들어서 생성자에 따라 받는 것이 다르도록 설정이 가능하다.

4. 객체

모든 인스턴스를 포함, 클래스 타입으로 선언된 것들

객체는 모든 인스턴스를 포함하는 것으로 클래스 타입으로 선언된 것들을 객체라고 부른다. 여기서 인스턴스는 객체를 실체화하면 생겨나는 것으로 요소라고 생각하면 이해하기 쉽다. 클래스를 실체화하게 되면, 프로그램은 객체의 위치정보를 변수에 저장하고 필요할 떄 참조한다.


5. 상속

다른 언어에서는 상속 키워드로 final을 사용하는데 코틀린에서는 무분별한 상속으로 예상치 못한 흐름을 막기 위해 final 키워드를 생략해 기본적으로 상속을 막아두었다.

코틀린에서는 open 키워드를 통해 상속 관계를 만들 수 있다 !!

  open class Bird {
      fun fly() {
          println("날아라")
  }

6. 오버라이딩

부모 클래스의 메소드를 제설계할 수 있고 이를 오버라이딩이라고 한다. 그런데 재설계를 할거면 굳이 부모 클래스가 필요한가? 생각할 수 있다. 하지만, 만약 필요한 기능이 있을 때마다 별도의 이름으로 만들게 되면 일관성에 문제가 생기고 이에 따라 재사용성이 낮아져서 유지보수가 어려워진다.

  • 상속받은 메소드 오버라이딩 시 자식 클래스 내부에서 단축키 입력
    : Ctrl + O

7. 오버로딩

원래는 동일한 이름으로 메소드를 한 개 이상 만들 수 없지만, 매개변수의 갯수를 다르게하거나 자료형을 다르게하면 동일한 이름으로 메소드를 만들 수 있다. 동일한 이름의 메소드를 여러 형태로 만드는 것을 오버로딩이라 한다. 참고로 반환형은 오버로딩에 영향을 주지 않는다.


8. 인터페이스

인터페이스는 공통적으로 필요한 기능을 외부에서 추가할 수 있는 기능을 가지고 있다. 인터페이스는 왜 사용해야 할까? 코틀린은 부모 클래스는 반드시 한 개이므로 모두 상속으로 처리할 수 없기 때문에 근본적인 공통점을 상속 받고, 추가적인 기능들은 인터페이스로 추가해야 한다.

인터페이스를 만들기 위해서는 interface 키워드를 사용하면 된다.

  // 메소드 존재 없이 이름만 존재하면 추상메소드라 부른다.
  // 추상메소드
  interface 인터페이스이름 {
      fun 메소드이름()
  }
profile
소소한 코딩 일기

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

글 잘 봤습니다, 많은 도움이 되었습니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

정말 유익한 글이었습니다.

답글 달기