Language/Kotlin

[Kotlin 객체지향 (3)] Data/ Sealed/ Enum /Inner /중첩 Class

728x90
반응형

Data Class

  • DataClass는 매개체의 데이터를 관리하는 용도로 사용하는 클래스이다.
  • abstract, open, sealed, inner 클래스로 정의할 수 없다
  • 반드시 주 생성자를 가지고 있어야 한다.

Data Class 함수

  • Data Class 는 개발자의 개발 편리성을 위해 몇 가지 메서드가 자동으로 구현된다.
  • equals : 객체가 가지고 있는 변수를 모두 비교하는 메서드
  • hashCode : 객체를 구분하기 위한 고유한 정수값
  • copy : 객체를 복제하는 메서드
  • toString : 객체가 가지고 있는 변수의 값을 출력
  • componentN : 객체 분해
data class TestClass2(var a1:Int, var a2:Int){

    var a3:Int = 0

    init {
        println("TestClass2의 init")
    }

    constructor(a1:Int, a2:Int, a3:Int) : this(a1, a2){
        this.a3 = a3
    }
    
    fun testMethod2(){
        println("TestClass2의 testMethod2 입니다")
    }
}

 

 

 

Sealed 클래스

  • 열거형은 특정 값을 의미하는 상수들을 모아 관리하는 개념이라면 Sealed Class를 객체를 모아 관리하는 개념이다.
  • 열거형의 경우 상수에 지정된 값은 절대로 변경이 불가능 하지만 Sealed Class를 객체를 관리하는 개념이므로 객체가 가지고 있는 변수에 값을 설정하여 지정된 값을 변경하는 것이 가능하다.
  • 열거형 사용 시 상수가 의미하는 값을 수시로 변경하거나 다양한 형태로 사용하고자 할 때 사용한다.

 

Enum(열거형) 클래스

  • 프로그램 개발 시 특정 그룹안의 구성 요소를 정의하는 값이 필요하고자 할 때 사용한다.
  • 열거형은 정의한 단어 자체가 프로그램에서 사용하는 값이 된다.

 

Inner Class

 

 

중첩클래스

  • 클래스안에 만드는 클래스를 중첩 클래스라고 부른다.
  • 중첩 클래스에서는 각 클래스에 정의한 멤버를 사용할 수 있는가를 숙지해야 한다.
  • 내부 클래스는 외부 클래스로부터 생성된 객체를 통해서만 객체 생성이 가능하다.
  • 외부 클래스는 내부 클래스의 멤버를 자유롭게 사용할 수 없지만 내부 클래스는 외부 클래스의 멤버를 자유롭게 사용할 수 있다.

익명 중첩 클래스

  • 이름이 없는 클래스를 익명 중첩 클래스라고 부른다.
  • 인터페이스나 추상클래스를 사용할 때 이용한다.
  • 인터페이스를 구현한 클래스나 추상 클래스를 상속받은 클래스를 만듬과 동시에 메서드를 Overriding하고 객체를 생성하는 것 까지 수행된다.
  • 이름이 없으므로 다시는 객체를 생성할 수 없다.
728x90
반응형