Kotlin-V2

Shaun·2022년 3월 29일
1

Kotlin

목록 보기
2/10

Property

  • 생성자는 생략된것

  • 기본 생성자로 생성시 -> getter/setter/멤버변수 자동 생성 하지만 val 은 값을 변경할수 없으므로 setter는 생성되지 않음

  • var/val 은 주 생성자에게만 쓸수 있다.

Getter/Setter

  • 게터와 세터가 자동으로 생성되면 어떻게 커스터 마이징 할까? 한번 알아보자!

  • 멤버 변수 선언시 -> getter/setter 자동 설정

  • 변수 밑에 get() 과 set() 을 설정해 원하는 값을 넣어준다.

  • val은 변경 불가라 set설정시 오류가 남

  • 이렇게 게터만, 세터만 접근 제어자 지정 가능

CustomGetter

  • val / var가 있으면 getter가 있으니 지워준다

  • customGetter를 만들때는 field사용 하지만 이렇게는 잘 안쓰고

  • 이 방법이 가독성이 더 좋아 더 많이 쓰인다.

지연초기화

= 코틀린은 변수 선언시 값을 무조건 설정해야 하는데 이것을 지연 시키는것

= 초기화하지 않고 사용할수 있다는게 아니라 변수 선언시 초기화 하지 않을수 있다는 의미


1. lateinit( 특정 메서드 호출시 초기화)

  • 기본자료형에는 쓸수 없다
  • var로 선언된 변수 초기화를 미룰 수 있다
  • val은 오류가 난다.(setter가 없기 때문)
  • var 값은 사용하기전에 무조건 초기화가 되있어야함

2.by Lazy

  • val로 선언된 변수 초기화를 미룰 수 있다.
  • 나중에 변수값을 초기화 해준다는게 아니라 변수 사용시 초기화 한다는 의미

오버라이딩

= 자바의 오버라이딩과 매우 흡사하다. 참조변수가 부모타입이면 부모타입의 변수와 메서드만 사용가능하며 참조 변수가 자식 타입이면 부모,자식 다 사용 가능

  • 코틀린은 변수,메서드 를 따로 지정하지 않으면 private 타입이라 open으로 지정해줘야 오버라이딩이 가능하다.

  • override open 메서드명 으로 오버라이딩을 한다.

  • 참조변수가 부모타입이면 부모타입의 변수와 메서드만 사용가능하며 참조 변수가 자식 타입이면 부모,자식 다 사용 가능

  • 코틀린은 부모의 멤버 변수도 오버라이딩 가능!

  • 자바에서의 오버라이딩과 매우 흡사

Any 클래스

  • Any클래스모든 클래스의 부모 클래스이다.

  • 위 코드에서 나온 toString 말고 다양항 메서드들이 존재한다. 우리의 필요에따라 오버라이딩해 사용하면 된다.

추상클래스

  • 자바와 매우 흡사하다. abstract 를 클래스에 붙여주면 됀다. 추상 클래스에 대해서는 따로 설명하지 않겠다.

  • 추상클래스 타입을 매개변수로 받는 메서드 생성 가능

인터페이스

  • 인터페이스도 자바와 매우 흡사. interface라는 명령어를 사용하며 인터페이스 타입을 매개변수로 받을수 있다.

  • 일반메서드도 생성 및 오버라이딩 가능

  • 구현 클래스 만들때는 ()생략 가능

  • 구현 클래스로 객체 생성시 참조변수 자료타입(인터페이스자료타입) 에 따라각각 사용할수 있는 메서드가 다르다.

  • 코틀린에서는 인터페이스 뿐만아니라 필드값도 넣어서 밑에서 구현 가능함

Companion

= 자바에서 static과 같은 역활
= 객체들이 공유하며 코틀린에서 자바로 자바에서 코틀린으로 사용 가능
= companion objetct{static변수들}

  • companion object{} 영역안에 있는 변수나 메서드들은 자바의 static으로 처리된다.

  • 자바와 똑같이 클래스이름.변수or메서드 로 호출해준다

  • 자바의 static

자바static VS 코틀린 Companion object

= 자바에서는 static 이여도 클래스이름.변수or 메서드/ 객체생성.변수or 메서드 호출이 가능하지만 코틀린은 무조건 클래스이름.변수or 메서드이다.(객체 생성 x)

  • 자바(static이 아닌) 부분을 코틀린에서 호출 하는 부분이다.

  • 반대로 코틀린(Companion 이 아닌) 부분을 자바에서 호출하는 부분이다.

  • 코틀린은 모든 변수를 property로 생성해 주기떄문에 getter로 호출해줘야함

Static /Companion Object 호출

  • 코틀린에서 자바static 영역 호출 부분이다. 똑같이 클래스 이름가지고 호출 가능하다.

  • 코틀린Companion 부분을 자바에서 호출 하는 부분이다.

  • 호출시 클래스.Companion.변수 이런식으로 호출되는데 Companion을 뺴고 싶으면 Companion Object 영역에 선언시 @JvmStatic을 선언해주면 됀다.

profile
호주쉐프에서 개발자까지..

0개의 댓글