Kotlin의 객체 대 클래스

David Mbochi Njonge 2023년6월20일
  1. Kotlin에서 싱글톤 객체 만들기
  2. Kotlin에서 클래스를 사용하여 객체 생성
  3. Kotlin에서 컴패니언 객체 생성
  4. Kotlin에서 데이터 클래스 생성
  5. 결론
Kotlin의 객체 대 클래스

classobject 기능은 일반적으로 OOP로 표시되는 객체 지향 프로그래밍에서 사용됩니다.

객체 지향 프로그래밍은 상속, 다형성, 추상화 및 캡슐화가 객체 지향 프로그래밍의 네 가지 기본 원칙인 프로그래밍 접근 방식입니다.

객체 지향 프로그래밍을 지원하는 언어의 예로는 Kotlin, Java, Python, JavaScript, TypeScript 등이 있습니다.

클래스의 주요 장점은 실제 단어와 개체를 시뮬레이션하고 다르게 동작하고 다른 상태를 갖는 다양한 상황을 최대한 많이 만들 수 있도록 도와준다는 것입니다.

예를 들어 자동차 디자인을 도와주는 애플리케이션을 만들고 싶을 수 있습니다. 우리는 다양한 유형의 자동차가 있고 색상, 좌석 수 등과 같은 다양한 상태를 가지고 있음을 알고 있습니다.

이를 달성하기 위해 클래스를 사용하여 자동차 프로토타입을 만들고 이 프로토타입에서 서로 다른 상태를 가진 자동차를 만들 수 있습니다. 이 튜토리얼에서는 Kotlin에서 클래스와 객체를 사용하는 방법을 배웁니다.

Kotlin에서 싱글톤 객체 만들기

다양한 형태로 존재할 수 있는 Kotlin에서 객체를 생성하는 다양한 방법이 있습니다. 이 예제에서는 정적 개체를 만드는 방법을 배웁니다.

IntelliJ 개발 환경을 열고 파일 > 새로 만들기 > 프로젝트를 선택합니다. 열리는 창에서 프로젝트 namekotlin-objects-and-classes로 입력하고 Language 섹션에서 Kotlin을 선택하고 Build system 섹션에서 IntelliJ를 선택합니다.

kotlin 폴더 아래에 Main.kt 파일을 만들고 다음 코드를 복사하여 파일에 붙여넣습니다.

object DBConnection{
    private const val url = "http://localhost";
    private const val port = 8080;
    private const val DBName = "customerDB";

    override fun toString(): String {
        return "Connected to database $DBName using port $port at $url";
    }
}

fun main(){
    println(DBConnection.toString());
}

이 예제에서는 클래스를 정의하지 않았지만 클래스의 정적 인스턴스를 만들었지만 이 코드를 Java로 디컴파일하면 클래스가 백그라운드에서 생성되고 싱글톤이 반환됨을 알 수 있습니다.

이 개체를 정적 클래스 인스턴스로 정의할 때 우리는 싱글톤을 참조합니다. 즉, 응용 프로그램 수명 동안 개체의 복사본이 하나만 만들어집니다.

main() 함수에 표시된 것처럼 호출하지 않고 이 개체의 멤버 함수 및 변수를 호출할 수 있습니다.

.만 추가하면 됩니다. toString() 메서드로 수행한 것처럼 호출하고 호출할 개체 이름의 기호입니다. 위의 예제를 실행하고 예상대로 작동하는지 확인합니다.

Connected to database customerDB using port 8080 at http://localhost

Kotlin에서 클래스를 사용하여 객체 생성

우리는 클래스가 이러한 것들에 대한 청사진을 생성하는 실제 사물과 그 동작을 시뮬레이션하는 데 도움이 된다고 언급했습니다.

인스턴스는 Blueprint에서 생성된 서로 다른 개체이며 다음 예제에서는 클래스와 클래스의 인스턴스를 생성하는 방법을 보여줍니다.

이전 예제를 주석 처리하고 다음 코드를 복사하여 Main.kt 파일 뒤에 붙여넣습니다.

class Employee(private val firstName: String,
               private val lastName: String,
               private val salary: Number){

    override fun toString(): String {
        return "$firstName $lastName earns a salary of $$salary"
    }
}

fun main(){
    val john = Employee("john","doe",60000);
    println(john.toString());
}

이 예제에서는 class 키워드를 사용하여 직원의 청사진을 생성했으며 이는 클래스를 생성하려고 할 때 항상 사용되는 구문입니다.

클래스에는 firstName, lastNamesalary의 세 가지 속성과 직원의 세부 정보를 반환하는 toString() 메서드가 있습니다.

main 메서드에서 클래스 이름 Employee()(구성자라고도 함)을 호출하여 직원 개체를 만들고 고객의 구체적인 속성을 전달했습니다.

생성자를 다시 호출하고 다른 속성을 전달하여 다른 객체를 생성함으로써 원하는 만큼 많은 인스턴스를 생성할 수 있습니다. 이 예제를 실행하여 예상대로 작동하는지 확인하십시오.

john doe earns a salary of $60000

Kotlin에서 컴패니언 객체 생성

첫 번째 예제에서는 전체 수명 동안 복사본이 하나만 있고 어떤 클래스에도 속하지 않는 정적 개체를 만드는 방법을 살펴보았습니다.

클래스 내의 정적에서는 컴패니언 개체를 사용하여 클래스에 속하는 정적 속성 및 함수를 만들 수 있습니다. 다음 예제는 이를 실현하는 방법을 보여줍니다.

이전 예제를 주석 처리하고 다음 코드를 복사하여 Main.kt 파일 뒤에 붙여넣습니다.

class Customer(private val name: String,
               private val email: String,
               private val orderItem: String){

    companion object{
        const val creditCard = 1
    }

    override fun toString(): String {
        return "$name bought a $orderItem using the email $email";
    }

    fun getName(): String{
        return this.name;
    }

}

fun main(){
    val customer = Customer("mary", "mary@gmail.com", "watch")
    println(customer.getName()+" has "+ Customer.creditCard+ " credit card")
    println(customer.toString())
}

정적 속성과 함수는 컴패니언 객체에 정의되고 컴패니언 객체는 클래스에 정의됩니다.

정적 속성 및 함수에 액세스하려는 경우 첫 번째 예에서 사용한 것과 동일한 접근 방식을 사용합니다.

예를 들어 Customer.creditCard는 클래스의 정적 속성 creditCard에 액세스하는 데 사용됩니다. 이 예제를 실행하여 예상대로 작동하는지 확인하십시오.

mary has 1 credit card
mary bought a watch using the email mary@gmail.com

Kotlin에서 데이터 클래스 생성

이전 예제를 주석 처리하고 다음 코드를 복사하여 Main.kt 파일 뒤에 붙여넣습니다.

import java.math.BigDecimal

data class Product(val productName: String,
                   val  productPrice: BigDecimal);

fun main(){
    val product = Product("watch", BigDecimal("457.65"))
    println(product.toString());
}

데이터 클래스는 데이터를 보유하는 데 사용되며 class 키워드 앞에 추가되는 data 키워드를 사용하여 생성됩니다.

데이터 클래스를 생성하기 위한 조건이 있으며 기본 생성자에 최소한 하나의 매개변수가 있는지 확인하고 매개변수가 val 또는 var을 사용하여 선언되고 데이터 클래스가 개방, 봉인, 일 수 없도록 보장하는 것을 포함합니다. 추상 또는 내부.

데이터 클래스는 toString(), equal(), hashCode() 등과 같은 클래스와 함께 사용되는 일반적인 함수를 생성하므로 개발자가 코드에서 상용구를 사용하지 않도록 도와줍니다.

이 예에서는 제품에 대한 데이터 클래스를 생성했으며 toString() 메서드를 호출하면 고객의 세부 정보가 무료로 반환됩니다. 이 예제를 실행하여 예상대로 작동하는지 확인하십시오.

Product(productName=watch, productPrice=457.65)

결론

이 튜토리얼에서는 Kotlin에서 다양한 유형의 객체와 클래스에서 객체를 생성하는 방법을 배웠습니다. 다루는 항목에는 싱글톤 개체 만들기, 클래스를 사용하여 개체 만들기, 동반 개체 만들기 및 데이터 클래스 만들기가 포함됩니다.

객체와 클래스에 대해 자세히 알아보려면 개념을 자세히 다루는 Kotlin 설명서를 참조하세요.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

관련 문장 - Kotlin Class

관련 문장 - Kotlin Object