관리 메뉴

hyeals study

Data 클래스 본문

코틀린

Data 클래스

hyeals 2020. 6. 16. 22:43

Data클래스는 아주 유용하고 간편하게 사용할 수 있는 클래스다.

바로 예시를 들어보면,

 

data class KotlinPerson(var name: String, var age: Int)

 

위의 코드는 KotlinPerson이라는 이름의 데이터 클래스이다.

데이터 클래스가 왜 간편하냐면 바로 아래와 같은 이유에서이다.


코틀린에서 작성한 데이터 클래스와 똑같은 기능을 갖는 클래스를 만들기 위해서 

자바에서는 아래와 같이 아주 긴 코드 작성이 필요하다.

 

public class JavaPerson(){
    private String name;
    private Int age;

    public class JavaPerson(){
    }

    public class JavaPerson(String name, int age){
        this.name = name;
        this.age = age;
    }

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }

    public Int getAge(){
        return age;
    }

    public void setAge(int age){
        this.age = age;
    }

    @Override
    public String toString(){
        return "JavaPerson{" + "name='" + name + "\'" + ", age=" + age + "}";
    }
}​

 

다시 말하면 자바에서 위와 같이 길게 작성해야하는 코드를 코틀린에서는 단 한 줄로 작성이 가능하다는 뜻이다.


정리하면 코틀린의 데이터 클래스는 기본적으로 게터세터를 자동으로 제공해주며 이 외에도 다양한 기능들을 제공해준다.

 

 

이제 데이터 클래스의 사용법을 알아보겠다.

 

1. 생성자 호출 및 클래스 생성

var kotlinPerson = KotlinPerson("hyeals", 22)

클래스를 생성하는 방법은 아주 간단하다.

위와 같이 데이터를 넘겨주기만 하면 된다.

 

 

2. 데이터 값 변경

 

데이터 클래스는 자동으로 게터와 세터를 생성해주는데 

자바에서는 setXXX getXXX형식이지만 코틀린에서는 아래와 같이 그냥 프로퍼티의 이름으로 접근하면 된다.

 

kotlinPerson.name = "hhhhh"
kotlinPerson.age = 25

 

3. copy() 메소드

 

데이터 클래스는 다양한 기능들을 제공하는데 그 중 copy 메소드는 말 그대로 클래스를 복사해준다.

아래의 코드를 보면 kotlinPerson_copy객체는 kotilnPerson객체를 그대로 복사한 객체이다.

 

 var kotlinPerson_copy = kotlinPerson.copy()

 

4. toString() 메소드

 

toString메소드는 객체가 갖고 있는 정보를 문자열로 만들어준다.

kotlinPerson.toString()
kotlinPerson_copy.toString()

위의 코드들을 모두 종합해서 출력해보면 아래와 같은 결과가 나온다.

 

    var kotlinPerson = KotlinPerson("hyeals", 22)
    var kotlinPerson_copy = kotlinPerson.copy()

    kotlinPerson.name = "hhhhh"
    kotlinPerson.age = 25

    println(kotlinPerson.toString())
    println(kotlinPerson_copy.toString())

 

출력 결과

 

'코틀린' 카테고리의 다른 글

코루틴 이해하기 2  (1) 2020.06.19
코루틴 이해하기 1  (0) 2020.06.19
map 함수  (0) 2020.06.15
[코틀린] 제네릭 타입 파라미터  (0) 2020.02.28
[코틀린] 고차 함수  (0) 2020.02.27
Comments