코틀린 클래스와 프로퍼티

siwan·2021년 10월 27일
0

코틀린 기초

목록 보기
2/6

클래스

--- 자바 클래스
public class Person{

private final String name;

public Person(String name){
 this.name = name;
 }

public String getName(){
  return name;
}
 }
 

--- 코틀린 클래스
class Person(val name:String)

자바는 필드가 둘 이상으로 늘어나면 생성자인 본문에서 파라미터를 대입하는 대입문의 수도 늘어난다.
코틀린에서는 필드 대입 로직을 훨씬 더 적은 코드로 작성 할 수 있다.
이러한 유형의 클래스를 값 객체라 부르며 간결하게 기술 할 수 있는 구문을 제공한다.

프로퍼티

클래스는 자신을 이용하는 클라이언트가 데이터에 접근하는 통로로 접근자 메소드를 제공한다.
필드를 읽기 위한 게터 제공하고 필드를 변경하게 허용해야 할 경우 세터를 추가 제공 할 수 있다.
필드와 접근자를 한데 묶어 프로퍼티라고 부른다.

코틀린 클래스 안에서 프로퍼티

class Person(
val name:String, //읽기전용 프로퍼티, 비공개 필드와 필드를 읽는 공개 게터로 만들어낸다.
val isMarried:Boolean // 변경가능한 프로퍼티, 비공개 필드, 공개 세터, 공개 게터로 만들어낸다.
)
  • Person안에는 비공개 필드가 들어가 있고 생성자가 그 필드를 초기화 하며 게터를 통해 비공개 필드에 접근하며 자바와 코틀린이 동일하게 사용된다.

  • 자바에서 Person 클래스 사용방법

Person person =new Person("bob",true)
System.out.println(person.getName())
>>bob
System.out.println(person.isMarried())
>>true
  • 코틀린에서 Person 클래스 사용방법
val person = Person("bob",true) // new 키워드를 사용하지 않고 생성자를 호출한다.
println(person.name) //프로퍼티 이름을 직접 사용해도 코틀린이 자동으로 게터를 호출해준다.
>>bob
println(person.isMarried)
>>true

커스텀 접근자

프로퍼티의 접근자를 직접 작성 할 수 있다.

 다음 예시는 사각형 클래스를 정의 하면서 자신이 정사각형인지 확인 여부를 알 수 있는 코드이다.
 
 class Rectangle(val height:Int,val width:Int){
    val isSquare:Boolean
    get() {   //프로퍼티 게터 선언
       return height == width
    }
    //또는 get() = height== width로 구현이 가능
}
  1. isSqaure 프로퍼티에는 자체 값을 저장하는 필드가 필요 없다.
  2. 이 프로퍼티에는 구현을 제공 하는 게터만 존재한다.
  3. 클라이언트가 isSquare 프로퍼티에 접근 할 때 마다 프로퍼티 값을 매번 계산한다.
profile
station3 다방 안드로이드 개발자

0개의 댓글