
kotlin에서 class와 data class 차이점을 이해한다.
Class vs Data class
1. 클래스와 데이터 클래스
- Class
- 객체의 복잡한 동작과 비즈니스 로직을 정의하는데 사용된다.
- Data Class
- 데이터를 보유하는 목적으로 설계되었다.
2. 가장 큰 차이점은 ?
데이터 클래스는 자동으로 equals(), hashCode(), toString(), copy(), componentN() 메소드를 생성해 주기 때문에 데이터를 사용하고 관리하는데 큰 편리함을 준다.
3. 그럼 클래스는 데이터 클래스의 기능을 사용 못하나 ?
사용이 가능하다. 하지만 데이터 클래스처럼 컴파일러가 자동으로 만들어주지 않기 때문에 직접 처리해주는 과정이 필요하다.
- equals(), hashCode(), toString()
- 자바의 Object 클래스(코틀린 Any)에서 상속받는 메소드로 일반 클래스에서 직접 오버라이딩 하면 데이터 클래스와 동일하게 동작할 수 있다.
- 직접 구현을 하지 않으면 toString()은 의미 없는 주소값을 출력, equals()는 내용이 같아도 무조건 다른 객체로 취급한다.
- copy()
- 데이터 클래스만의 전유물로 일반 클래스에는 존재하는 않는 메소드이다. 직접 메소드를 정의해서 구현해야한다.
- eomponentN()
- 구조 분해 할당을 위해 필요한 메소드로 일반 클래스에서는 operator 키워드를 사용해 직접 구현해야한다.
4. 결론
일반 클래스도 데이터 클래스처럼 동작하게 구현 가능하지만, 귀찮고 반복 되는 작업을 대신 해주기위해 데이터 클래스가 등장하게 되었고 특별한 로직 없이 데이터를 담기 위해서라면 데이터 클래스를 사용하는 것이 더욱 효율적이다.
'Kotlin > Kotlin' 카테고리의 다른 글
| List / ArrayList / MutableList / arrayListOf() / mutableListOf() (0) | 2023.07.19 |
|---|