Kotlin のオブジェクトとクラス

David Mbochi Njonge 2023年6月20日
  1. Kotlin でシングルトン オブジェクトを作成する
  2. Kotlin でクラスを使用してオブジェクトを作成する
  3. Kotlin でコンパニオン オブジェクトを作成する
  4. Kotlin でデータ クラスを作成する
  5. まとめ
Kotlin のオブジェクトとクラス

class および object 機能は通常、OOP として示されるオブジェクト指向プログラミングで使用されます。

オブジェクト指向プログラミングは、継承、ポリモーフィズム、抽象化、およびカプセル化がオブジェクト指向プログラミングの 4つの基本原則であるプログラミング アプローチです。

オブジェクト指向プログラミングをサポートする言語の例には、Kotlin、Java、Python、JavaScript、TypeScript などがあります。

クラスの主な利点は、実際の物やオブジェクトをシミュレートするのに役立ち、異なる動作と異なる状態を持つさまざまな状況をできるだけ多く作成するのに役立つことです。

たとえば、自動車の設計に役立つアプリケーションを作成したい場合があります。 車にはさまざまな種類があり、色、座席数などの状態が異なることがわかっています。

これを実現するために、クラスを使用して車のプロトタイプを作成し、このプロトタイプから、他の状態とは異なる状態を持つ車を作成できます。 このチュートリアルでは、Kotlin でクラスとオブジェクトを使用する方法を学習します。

Kotlin でシングルトン オブジェクトを作成する

Kotlin でオブジェクトを作成するにはさまざまな方法があり、さまざまな形式で存在できます。 この例では、静的オブジェクトを作成する方法を学びます。

IntelliJ 開発環境を開き、File > New > Project を選択します。 開いたウィンドウで、プロジェクト 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 に逆コンパイルすると、バックグラウンドでクラスが作成され、シングルトンが返されることがわかります。

このオブジェクトを静的クラス インスタンスとして定義する場合、シングルトンを参照します。つまり、アプリケーションの有効期間中にオブジェクトのコピーが 1つだけ作成されます。

main() 関数で示されているように、このオブジェクトを呼び出すことなく、このオブジェクトのメンバー関数と変数を呼び出すことができることに注意してください。

. を追加するだけです。 toString() メソッドで行ったように、オブジェクト名のシンボルを呼び出して呼び出しを行います。 上記の例を実行し、期待どおりに動作することに注意してください。

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

Kotlin でクラスを使用してオブジェクトを作成する

クラスは、現実世界のものとその動作をシミュレートするのに役立ち、これらのものの青写真を作成すると述べました。

インスタンスは、ブループリントから作成されたさまざまなオブジェクトです。次の例は、クラスとクラスのインスタンスを作成する方法を示しています。

前の例をコメントアウトし、次のコードをコピーして 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 キーワードを使用して従業員の設計図を作成しました。これは、クラスを作成するときに常に使用される構文です。

このクラスには、firstNamelastName、および salary の 3つのプロパティと、従業員の詳細を返す 1つのメソッド toString() があります。

main メソッドでは、コンストラクターとも呼ばれるクラス名 Employee() を呼び出して従業員のオブジェクトを作成し、顧客の具体的なプロパティを渡しました。

コンストラクターを再度呼び出し、さまざまなプロパティを渡してさまざまなオブジェクトを作成することにより、必要な数のインスタンスを作成できます。 この例を実行して、期待どおりに動作することを確認します。

john doe earns a salary of $60000

Kotlin でコンパニオン オブジェクトを作成する

最初の例では、全ライフタイムでコピーを 1つだけ持ち、どのクラスにも属さない静的オブジェクトを作成する方法を見てきました。

クラス内の静的では、コンパニオン オブジェクトを使用して、クラスに属する静的プロパティと関数を作成できます。 次の例は、これを実現する方法を示しています。

前の例をコメントアウトし、次のコードをコピーして 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());
}

データ クラスは、データを保持するために使用され、data キーワードを使用して作成されます。このキーワードは、class キーワードの前に追加されます。

データ クラスを作成するための条件があり、プライマリ コンストラクターに少なくとも 1つのパラメーターがあること、パラメーターが val または var を使用して宣言されていること、およびデータ クラスが opensealed であってはならないことを確認することが含まれます。 抽象または内部

データ クラスは、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 Object