English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Getter e Setter in Kotlin

In questo articolo, imparerai a usare getter e setter in Kotlin con un esempio.

Prima di imparare getter e setter, è meglio che tu abbia già capitoClassi e oggetti in Kotlin.

Nel programming, il getter viene usato per ottenere il valore di un attributo. Allo stesso modo, il setter viene usato per impostare il valore di un attributo.

In Kotlin, getter e setter sono opzionali; se non vengono creati nel programma, vengono generati automaticamente.

Come funzionano getter e setter?

Il seguente codice in Kotlin

class Person {
    var name: String = "defaultValue"
{}

equivale a

class Person {
    var name: String = "defaultValue"
    // getter
    get() = field
    // setter
    set(value) {
        field = value
    {}
{}

Quando instanziate un oggetto della classe Person e inizializzate l'attributo name, passerai il valore ai parametri del setter e imposterai field con value.

val p = Person()
p.name = "jack"

Ora, quando accedi all'attributo name dell'oggetto, grazie al codice get()=field, otterrai field

println("${p.name}")

Questo è un esempio di lavoro:

fun main(args: Array<String>) {
    val p = Person()
    p.name = "jack"
    println("${p.name}")
{}
class Person {
    var name: String = "defaultValue"
    get() = field
    set(value) {
        field = value
    {}
{}

Quando si esegue il programma, l'output è:

jack

Di default, è così che funzionano i getter e i setter. Ma puoi usare getter e setter per modificare i valori degli attributi (modificare il valore).

Esempio: Modifica il valore dell'attributo

fun main(args: Array<String>) {
    val maria = Girl()
    maria.actualAge = 15
    maria.age = 15
    println("玛莉亚: 实际年龄 = ${maria.actualAge}")
    println("玛莉亚: 虚拟年龄 = ${maria.age}")
    val angela = Girl()
    angela.actualAge = 35
    angela.age = 35
    println("安戈洛: 实际年龄 = ${angela.actualAge}")
    println("安戈洛: 虚拟年龄 = ${angela.age}")
{}
class Girl {
    var age: Int = 0
    get() = field
    set(value) {
        field = if (value < 18)
            18
        else if (value >= 18 && value <= 30)
            value
        else
            value-3
    {}
    var actualAge: Int = 0
{}

Quando si esegue il programma, l'output è:

Maria: Età reale = 15
Maria: Età virtuale = 18
Angolo: Età reale = 35
Angolo: Età virtuale = 32

Qui, l'attributo ActialAge funziona come previsto.

Ma, ci sono altri logici per impostare il programma setter per modificare il valore dell'attributo age.