Kotlin objektumnyilatkozatok és kifejezések

Ebben a cikkben példák segítségével megismerheti az objektumdeklarációkat (szingulettek) és az objektumkifejezéseket.

Tárgynyilatkozatok

A Singleton egy objektum-orientált minta, ahol egy osztálynak csak egy példánya lehet (objektum).

Például olyan alkalmazást dolgozol, amely rendelkezik SQL adatbázis háttérrendszerrel. Hozzon létre egy kapcsolatkészletet az adatbázis eléréséhez, miközben ugyanazt a kapcsolatot használja fel minden ügyfél számára. Ehhez létre lehet hozni a kapcsolatot a singleton osztályon keresztül, hogy minden ügyfél ugyanazt a kapcsolatot kapja.

Kotlin egyszerű módszert kínál szingulettek létrehozására az objektumdeklarációs funkció használatával. Ehhez objektum kulcsszót használnak.

 objektum SingletonExample (… // osztálytest …)

A fenti kód ötvözi az osztály deklarációját és az osztály egyetlen példányának SingletonExample deklarációját.

Az objektum deklaráció tartalmazhat tulajdonságokat, módszereket és így tovább. Ehhez azonban nem engedik, hogy legyen konstruktoruk (ennek értelme van). Miért?

A normál osztály objektumaihoz hasonlóan a .jelölés használatával meghívhatja a módszereket és a hozzáférési tulajdonságokat .

Példa: Object Declaration

 object Test ( private var a: Int = 0 var b: Int = 1 fun makeMe12(): Int ( a = 12 return a ) ) fun main(args: Array) ( val result: Int result = Test.makeMe12() println("b = $(Test.b)") println("result = $result") )

A program futtatásakor a kimenet a következő lesz:

 b = 1 eredmény = 12

Az objektumdeklaráció hasonló módon örökölheti az osztályokat és az interfészeket, mint a normál osztályok.

Egyedülálló és függőségi injekció

Az objektum deklarációk néha hasznosak lehetnek. Ezek azonban nem ideálisak olyan nagy szoftverrendszerekben, amelyek kölcsönhatásba lépnek a rendszer számos más részével.

Ajánlott olvasmány: Függőségi injekció és Singleton tervezési minta

Kotlin objektum kifejezések

Az objektum kulcsszó felhasználható névtelen objektumok néven ismert névtelen osztály objektumainak létrehozására is. Akkor használják őket, ha valamilyen osztály vagy interfész enyhe módosításával létrehozni kell egy objektumot anélkül, hogy alosztályt kellene deklarálni hozzá. Például ,

 window.addMouseListener (objektum: MouseAdapter () (felülbírálja a szórakoztató mouseClicked (e: MouseEvent) (//…) felülírja a fun mouseEntered (e: MouseEvent) (//…)))

(A példa a Kotlin hivatalos oldaláról származik.)

Itt egy névtelen objektumot nyilvánítanak a MouseAdapter osztály kiterjesztésévé. A program felülír két MouseAdaptermódszert: mouseClicked()és mouseEntered().

Ha szükséges, hozzárendelhet egy nevet az anonim objektumhoz, és eltárolhatja azt egy változóban. Például,

 val obj = object: MouseAdapter () (felülírja a szórakoztató mouseClicked (e: MouseEvent) (//…) felülírja a fun mouseEntered (e: MouseEvent) (//…))

Példa: Kotlin Object Expression

 open class Person() ( fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person() ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

A program futtatásakor a kimenet a következő lesz:

Ételt enni. Beszélgetni az emberekkel. Nem imádkozom. Ateista vagyok.

Itt az anonim objektum változó ateistában van tárolva, amely pray()felülírja a Person class with method-t.

Ha olyan osztályt valósít meg, amelynek konstruktora van egy névtelen objektum deklarálásához, akkor át kell adnia a megfelelő konstruktor paramétereket. Például,

 open class Person(name: String, age: Int) ( init ( println("name: $name, age: $age") ) fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person("Jack", 29) ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

A program futtatásakor a kimenet a következő lesz:

név: Jack, életkor: 29 Ételt fogyasztani. Beszélgetni az emberekkel. Nem imádkozom. Ateista vagyok.

érdekes cikkek...