Kotlin 클래스에 대한 빠른 소개

소개


  • 이 시리즈는 특정 순서로 진행되지 않으므로 원하는 블로그 게시물을 자유롭게 읽으십시오. 블로그 게시물에 사용할 수 있다고 생각되는 항목을 찾을 때마다 하나를 작성하여 여기에 게시합니다
  • .

    시작하기


  • 이 튜토리얼이 끝날 때까지 여러분과 저 모두 아래 코드를 더 잘 이해하기를 바랍니다.

  • data class Calf(
    
        val tagNumber: String,
        val CCIANumber: String,
        val sex:String,
        val details:String,
        val date: Date,
        val id: Long =0
    ) {
    
    }
    


  • 이 튜토리얼은 완전하지는 않지만 Kotlin 클래스 시스템의 놀라운 기능에 대한 확실한 이해를 제공할 것입니다. Kotlin의 클래스에 대해 더 알고 싶다면 문서HERE와 Dmitry Jemerov와 Svetlana Isakova의 책Kotlin in action을 추천합니다.

  • 클래스


  • Kotlin의 클래스는 일반 class 키워드로 선언되며 세 부분으로 구성됩니다.

  • 1) 클래스 이름 : 파일 이름 위의 코드 블록에서 이름은 Calf입니다.

    2) 클래스 헤더: 유형 매개변수(나중에 매개변수에 대해 자세히 설명), 기본 생성자 및 수정자를 포함합니다.

    3) 클래스 본문: { } 중괄호 안의 모든 내용 포함
  • 재미있는 사실, 클래스 본문과 클래스 헤더는 둘 다 비어 있는 경우 선택 사항입니다
  • .

    건설자


  • Kotlin의 클래스는 primary constructor 및 하나 이상의 secondary constructor(여기서는 기본 생성자에 대해 설명하지 않음)를 가질 수 있습니다. 보조 생성자에 대한 자세한 내용은 HERE 문서를 참조하십시오.
  • 위의 코드 블록에서 기본 생성자는 다음과 같습니다.

  • (
    
        val tagNumber: String,
        val CCIANumber: String,
        val sex:String,
        val details:String,
        val date: Date,
        val id: Long =0
    ) 
    
    


  • 클래스 이름 뒤에 옵니다. 보시다시피 기본 생성자는 초기화 코드를 포함할 수 없습니다. 초기화 코드가 필요한 경우 Initializer block 내부에 배치할 수 있습니다.
  • Kotlin에는 PROPERTIES를 선언하고 기본 생성자에서 초기화하는 매우 정확한 구문이 있습니다. 내가 property 에 상당히 중점을 두었다는 것을 눈치채셨을 것입니다. 더 나아가기 전에 속성이 실제로 무엇인지 확실하게 이해해야 하기 때문입니다.

  • 속성: 필드와 접근자 메서드의 조합입니다.
  • 따라서 속성에 대해 이야기할 때는 데이터를 보유하는 필드와 데이터를 설정하거나 액세스하는 데 사용되는 메서드를 모두 의미합니다.
  • 기본 생성자에는 val , val tagNumber: String 로 정의된 속성이 있습니다. val 키워드는 값이 한 번만 설정되고 변경할 수 없음을 의미합니다. 접근자 메서드 측면에서 val로 선언된 속성에는 getter 메서드만 있습니다.

  • 데이터 클래스


  • Kotlin 컴파일러는 장황한 코드 기반을 피하기 위해 유용한 메서드를 생성할 수 있습니다. 클래스를 data 클래스로 선언하면 컴파일러가 여러 메서드를 생성하도록 지시합니다. 가장 일반적이고 잘 알려진 것은 equals() 및 hashcode() 입니다. Kotlin에서 품질을 확인하는 기본 방법은 == 연산자를 사용하는 것입니다. 내부적으로 컴파일러는 equals() 메서드를 호출하고(equals() 대신 ==를 사용하는 일반적인 Java 버그를 피함) 우리가 structural equality라고 부르는 것을 제공합니다. 여전히 Referential equality(두 개의 참조가 동일한 객체를 가리킴)를 원하면 === 연산자를 사용하십시오. equals() 및 hashcode() 모두 기본 생성자에서 선언된 모든 속성을 고려합니다. 생성된equals() 메서드는 속성의 모든 값이 동일한지 확인하고 유효성을 검사합니다. hashcode() 메서드는 모든 속성의 해시코드(객체를 식별하는 고유 번호)에 따라 달라지는 값을 반환합니다.
  • 또한 속성이 기본 생성자에서 선언되지 않으면 equals() 및 hashcode() 메서드의 일부가 되지 않는다는 점을 지적해야 합니다.

  • 결론


  • 시간을 내어 제 블로그 게시물을 읽어주셔서 감사합니다. 질문이나 우려 사항이 있는 경우 아래에 의견을 말하거나 에서 저에게 연락하십시오.
  • 좋은 웹페이지 즐겨찾기